簡體   English   中英

python中的yield == C#中的yield return?

[英]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方法及其類轉換為IEnumerableIEnumerator實現的類的實例。

對關鍵字yield批評

首先, yield具有兩個缺點,旨在簡化實現迭代。 但是它可以用來編寫非常糟糕的設計代碼(例如goto)。 但是,將其用於除預期目的以外的其他地方會使您的代碼難以遵循。 第二個問題是,在“面向對象”范式中,“收益”沒有像委托那樣有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM