python中的yield ==在C#中产生回报?

时间:2014-08-12 06:57:15

标签: c# python iterator return yield

我还没有找到任何关于在C#中使用JUST yield的信息(当用于生成器时)。 这是因为C#始终使用yield with 返回? (yield return Object)

我认为自己今天在python中学习相同的主题(生成器)时也感到困惑,而且到目前为止,我只看到了Python中单独使用的收益...

1 个答案:

答案 0 :(得分:1)

C#2.0引入了

yield关键字,以便更轻松地实现iteartion。另一方面,它有一些不足之处。我们先来看看yield关键字。

public IEnumerable GetPowersofTwo()
{
   for (int i = 1; i < 10; i++)
       yield return (int)System.Math.Pow(2, i);
   yield break;
}

这只是一种C#语言功能。在编译期间,编译器将yield方法及其类转换为IEnumerableIEnumerator实现类的实例。

批评关键字yield

yield有一些缺点,首先它旨在简化迭代的实现。但它可以用来编写非常恶劣的设计代码(如goto)。但是将其用于预期目的之外将使您的代码难以遵循。第二个问题是“屈服”在面向对象的范例中没有意义,就像委托一样。