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

C# Why shouldn't I ever use coroutines?

此主题的评论之一:,表示:

Never never ever use coroutines. They teach bad habits from the point of view as a c# developer and will lead to a lynching if you take a regular c# job

我的问题是,这是为什么?这只是在 Unity 中还是在一般情况下? Unity 的官方虚拟现实示例 https://www.assetstore.unity3d.com/en/#!/content/51519 大量使用它们(尤其是传单示例)而不是 Invoke 或 Invoke Repeating,这些示例项目也是最近发布的。

这在很大程度上是 Unity 的事情,尽管建议适用于任何地方。

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

Unity 正在做的是使用 yield return 作为伪协程,这会让不熟悉它的开发人员感到困惑。

在现代 C# 中,我们 async/await 可以实现 Unity 的意图,但 Unity 是在该功能可用之前制作的。