作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习TAP ,我想知道 .NET 的哪些功能允许将此方法中的 result
隐式转换为或解释为 Task(Of String)
:
Public Async Function CheckHostInstructionAsync() As Task(Of String)
Dim result As String
result = Await pipeReader.ReadLineAsync() 'pipeReader is a System.IO.StreamReader
If (result.Equals("exit", StringComparison.InvariantCultureIgnoreCase)) Then terminate = True
Return result
End Function
首先,如果Await pipelineReader.ReadLineAsync()
“返回”一个Task(Of String)
,为什么我可以将其分配给result
,它被声明为字符串?
第二,为什么我可以说返回结果
,尽管返回类型是Task(Of String)
。
最佳答案
关键在 Async/Await关键字。
Async
告诉编译器您将假装返回一个 string
,并且它需要处理以下事实的复杂性:实际上返回一个最终会产生一个字符串的任务。
Await
只能在 Async
方法中使用,它告诉编译器下一个表达式将返回一个 Task
生成一些东西,编译器需要解决假装此后的其余代码给出任务将返回的东西(在本例中为 String
)的复杂性。
关于.net - 异步函数返回 Task(Of String) 还是 String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27571340/
我是一名优秀的程序员,十分优秀!