Microsoft 文档教程向我介绍了这段代码:
var repositories = await JsonSerializer.DeserializeAsync<List<Repository>>(await streamTask);
我熟悉
async
和await
以及如何使用它们,至少我是这么认为的。本教程提到这是一个使用“await 表达式”的示例 - 这很好,毕竟该表达式本身看起来并不那么奇怪,但我还没有找到任何 C# 代码的另一个单一示例,例如this - 等待表达式被传递到方法的地方 - 任何地方。这里的await关键字几乎看起来像是一个参数修饰符,例如参考、输出、输入。
所以我的问题是,这是一个新功能,只是很少使用,还是对我来说只是新功能?它的功能似乎显而易见、直观且有用,但正如我提到的,我还没有在任何地方找到类似代码的另一个示例。
我正在浏览的教程:
https://learn.microsoft.com/en-us/dotnet/csharp/tutorials/console-webapiclient
我还没有找到任何像这样的 C# 代码的另一个单一示例 - 其中等待表达式被传递到方法 - 任何地方。
这并不罕见。正如另一位评论者指出的那样,出于可调试性或可读性的原因,
await
关键字通常被分成单独的行。但这种用法我见过很多次了。
await
表达式的另一个常见模式是使用括号来提取结果的一部分:
var x = (await SomethingAsync()).Property;
这里的await关键字几乎看起来就像是一个参数修饰符,例如参考、输出、输入。
我认为它只是看起来那样,因为它不熟悉并且颜色像编辑器中的关键字一样。
await
- 就像 new
- 是存在于表达式中的关键字。
所以我的问题是,这是一个新功能,只是很少使用,还是对我来说只是新功能?
对你来说是新的。
在原始
async
CTP 中,await
表达式无法正常工作,并且 had 需要拆分为单独的语句。但在官方 async
支持发布之前,该限制已被删除,因此 await
表达式从第一天起就受到支持(忽略预发布)。