Max*_*ich 39 .net c# asynchronous async-ctp
浏览频道9 msdn视频我发现以下未答复的评论,希望有人可以解释一下吗?
我不明白async关键字.为什么不在方法返回Task时随时允许await关键字,就像迭代器可以在任何返回IEnumerable的方法上产生返回一样.
我确信有充分的理由,我只是想明白为什么上述建议是不可能的.
jer*_*enh 21
它的引入主要是为了避免向后兼容性问题.如果async
方法的-ness必须由编译器推断(通过检测await
关键字),那么有一些微妙的场景会突然对现有代码进行不同的处理,特别是当您有标识符(称为变量或函数名称await
)时.
完整的解释如下:http://blogs.msdn.com/b/ericlippert/archive/2010/11/11/whither-async.aspx
Ada*_*rth 15
我想也许这篇文章涵盖了推理:
http://blogs.msdn.com/b/ericlippert/archive/2010/11/11/whither-async.aspx
第一段规定:
许多人问我设计决策的动机是什么,要求任何包含"await"表达式的方法都以上下文关键字"async"作为前缀.
它的结论是:
这有很多优点和缺点; 在对所有这些进行评估之后,以及大量使用原型编译器来了解它的感受,C#设计者决定在包含"await"的方法上要求"异步".我认为这是一个合理的选择.
缺点是向后兼容性.
进一步阅读:
对我来说,最令人信服的理由是,return
当一个函数成为时,语句的含义会发生变化async
.没有asnyc
return x
意味着"返回具有值的任务x
",并且使用异步意味着"将任务的结果设置为" x
.
归档时间: |
|
查看次数: |
3227 次 |
最近记录: |