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