DP3*_*3PO 1 c# asynchronous task parameter-passing async-await
Microsoft 文档教程向我介绍了这段代码:
\nvar repositories = await JsonSerializer.DeserializeAsync<List<Repository>>(await streamTask);\nRun Code Online (Sandbox Code Playgroud)\n我熟悉它们async并await了解如何使用它们,至少我是这么认为的。教程提到这是使用 \xe2\x80\x9cawait 表达式 \xe2\x80\x9d 的示例 - 那 \xe2\x80\x99s 很好,毕竟,表达式 \xe2\x80\x99t 看起来并不那么奇怪在它自己的\xe2\x80\x99s 上,但我还没有找到任何像这样的 C# 代码的另一个单一示例 - 其中等待表达式被传递到方法 - 任何地方。这里的await 关键字几乎看起来像\xe2\x80\x99 一样充当参数修饰符,例如ref、out、in。
所以我的问题是,这是一个新功能,只是很少使用,还是对我来说只是新功能?它\xe2\x80\x99s 的功能看起来很明显、直观且有用,但正如我提到的,我还没有在任何地方找到类似代码的另一个示例。
\n我正在浏览的教程:
\nhttps://learn.microsoft.com/en-us/dotnet/csharp/tutorials/console-webapiclient
\n\n\n我还没有找到任何像这样的 C# 代码的另一个单一示例 - 其中等待表达式被传递到方法 - 任何地方。
\n
这并不罕见。正如另一位评论者指出的那样,await出于可调试性或可读性的原因,关键字通常被分成单独的行。但这种用法我已经见过很多次了。
表达式的另一种常见模式await是使用括号来提取结果的一部分:
var x = (await SomethingAsync()).Property;\nRun Code Online (Sandbox Code Playgroud)\n\n\n这里的await 关键字几乎看起来像\xe2\x80\x99 一样充当参数修饰符,例如ref、out、in。
\n
我认为它只是看起来那样,因为它不熟悉并且颜色像编辑器中的关键字一样。await- like new- 是表达式中存在的关键字。
\n\n所以我的问题是,这是一个新功能,只是很少使用,还是对我来说只是新功能?
\n
对你来说是新的。
\n在最初的asyncCTP 中,await表达式无法正常工作,必须将其拆分为单独的语句。但在官方async支持发布之前,该限制已被删除,因此await从第一天起就支持表达式(忽略预发布)。
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |