我目前正在准备考试。我在旧考试中发现的一个问题是:
“为什么大多数面向对象的语言不支持协程?(提示:不是因为它们支持线程)”
问题是我找不到一个好的答案。当然,如果您具有面向对象,则不需要协程,但是在某些情况下拥有协程仍然非常有用。

最佳答案

我认为是出于意识形态原因。在OOP中,代表状态的主要实体是对象。没有其他应具有状态。在协程的世界中,它们成为国家的又一载体,这与OOP有点矛盾。在C#中有协程的次要版本:yield语句,但这纯粹是C#的功能,而不是CLR和.net本身,而已编译的所有状态变量都成为隐藏类的字段。这是因为,除了对象以外,.net中都没有任何状态。

关于oop - 为什么大多数面向对象的语言都不支持协程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3188107/

10-13 08:07