9

MSDN 库await关键字列为运算符。这对我来说似乎很奇怪——我原以为它是一个修饰符,就像关键字async一样

为什么这是运营商?

4

3 回答 3

5

async是声明的修饰符。类似于public

await是一个使用异步运算符并对其执行某些操作的操作。类似于return

await不是修改其后放置的内容,而是指定如何处理该操作。相反async,它实际上并没有修改任何东西,它只是标记了一个特定的方法的风格async(从句法的角度来看,最终await的 's 执行了对方法结构的所有更改)。

于 2012-07-31T01:29:58.670 回答
5

修饰符适用于声明。private、static、out、ref、params、override 关键字就是这样的例子。和异步。

运算符应用于表达式并转换表达式结果。您在 await 右侧写的内容称为“await 表达式”。因此它是一个单一的运算符。

于 2012-07-31T07:10:05.930 回答
0

好吧,相信大家都同意运营商。我一直在说,将它定义为运算符的关键概念是它改变了结果数据类型,但这并不完全正确。

让我们看一下运算符的定义:

C# 提供了大量运算符,它们是指定在表达式中执行哪些操作的符号

资料来源:MSDN

所以,正如 Guvante 所指出的,我们确实有一个表示type identifier = await asyncMethod()(你知道的,主要是喜欢它)的表达式。并且await确实对这个表达式执行了操作。它处理等待和从TaskResult预期类型的​​转换,等等。

正如我所说,我同意其他 2 个答案(Guvante 和 Hans Passant),我只是认为这个小概念也可以提供帮助。

问候

于 2012-07-31T09:14:40.997 回答