Почему ключевое слово await в C# 5.0 указано в качестве оператора, а не модификатора?
Библиотека MSDN выводит ключевое слово await в качестве оператора. Это кажется мне странным - я бы подумал, что это модификатор, как ключевое словоasync .
Почему это оператор?
3 ответов:
asyncявляется модификатором для объявления. Похоже наpublic.
awaitэто операция, которая потребляет асинхронный оператор и что-то с ним делает. Похоже наreturn.
awaitне изменяет то, что помещается после него, а вместо этого указывает, как эта операция обрабатывается. В отличие от этогоasyncфактически ничего не изменяет, он просто отмечает, что конкретный метод находится в стилеasync(это конечныеawait, которые выполняют все изменения в структуре методов с синтаксической точки зрения).
Модификатор применяется к объявлению. Частные, статические, вне, Реф, параметры, изменить ключевые слова, примеры. И асинхронность.
Оператор применяется к выражению и преобразует результат выражения. То, что вы пишете справа от await, называется "выражение await". Таким образом, это унитарный оператор.
Хорошо, я полагаю, что мы все согласны с тем, что это является оператором. Я говорил, что ключевым понятием для определения его как оператора было то, что он изменяет тип данных результата, но это не все верно.
Давайте рассмотрим определение оператора:
C# предоставляет большой набор операторов, которые являются символами , определяющими какие операции выполнять в выражении
Источник: MSDN
Итак, как указал Гуванте у нас есть выражение , обозначаемое
Как я уже сказал, Я согласен с двумя другими ответами (Guvante и Hans Passant), я просто подумал, что эта маленькая концепция тоже может помочь.type identifier = await asyncMethod()(в основном нравится, знаете ли). Иawaitдействительно выполняет операцию над этим выражением. Он обрабатывает ожидание и преобразование изTaskResultв ожидаемый тип и так далее.С уважением
Comments