C#为什么我不应该使用协同程序?

时间:2016-03-05 16:51:40

标签: c# unity3d coroutine

关于这个帖子的评论之一:Checking condition and calling continuous method with periods of delay unity,说:

  

永远不要使用协同程序。作为一名c#开发人员,他们从不同的角度教导坏习惯,如果你做一个普​​通的c#工作会导致私刑

我的问题是,这是为什么?这只是在Unity还是一般? Unity的官方虚拟现实样本https://www.assetstore.unity3d.com/en/#!/content/51519非常重视它们(特别是传单示例),而不是Invoke或Invoke Repeating,这些示例项目最近也已发布。

1 个答案:

答案 0 :(得分:8)

这是一个非常统一的东西,虽然建议适用于任何地方。

开发人员不希望迭代IEnumerable来改变程序的状态。它不是IEnumerable的用途,并且与所有.NET的行为不一致。

Unity正在做的是使用yield return作为伪协同程序,它会对任何不熟悉它的开发者造成混淆。

在现代C#中,我们有async / await来完成Unity的目标,但Unity是在该功能可用之前完成的。

相关问题