为什么大多数面向对象的语言不支持协同程序?

Joh*_*nes 8 oop coroutine

我正在准备考试.我在旧考试中发现的问题之一是:
"为什么大多数面向对象的语言不支持协同程序?(提示:这不是因为它们支持线程)"

问题是,我找不到一个好的答案.当然,如果你有面向对象的话你不需要协同程序,但在某些情况下使用它们仍然非常有用.

And*_*rey 6

我认为这是出于意识形态的原因.在OOP中,表示状态的主体是对象.没有别的东西应该有.在协程世界中,它们成为国家的另一个载体,与OOP略有矛盾.在C#中有一个次要版本的coroutine:yield语句,但它纯粹是C#的特性,而不是CLR和.net本身,而编译时所有状态变量都成为隐藏类的字段.这是因为除了对象之外什么都不能在.net中有状态.

  • ...除非协程本身是一个对象. (2认同)