[英]yield in python == yield return in C#?
我無法找到有關在C#中使用JUST yield的任何信息(用於生成器時)。 這是因為C#始終將yield 與 return一起使用嗎? (收益回報對象)
自從我今天也在python中學習同一個主題(生成器)以來,我覺得自己很困惑,到目前為止,我只看到在Python中單獨使用yield。
C#2.0引入了yield
關鍵字,以更輕松地實現迭代。 另一方面,它有一些缺點。 讓我們首先看一下yield關鍵字。
public IEnumerable GetPowersofTwo()
{
for (int i = 1; i < 10; i++)
yield return (int)System.Math.Pow(2, i);
yield break;
}
它只是C#語言的功能。 在編譯期間,編譯器將yield方法及其類轉換為IEnumerable
和IEnumerator
實現的類的實例。
對關鍵字yield
批評
首先, yield
具有兩個缺點,旨在簡化實現迭代。 但是它可以用來編寫非常糟糕的設計代碼(例如goto)。 但是,將其用於除預期目的以外的其他地方會使您的代碼難以遵循。 第二個問題是,在“面向對象”范式中,“收益”沒有像委托那樣有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.