0
您能否向我解釋'yield'關鍵字在Enumerable方面的工作原理?例如。我不明白如何在下面的程序代碼返回類型的對象的IEnumerable:在C#中解釋yield關鍵字
如果我將鼠標懸停在「.Current」它說,我這‘獲取的元素在枚舉的當前位置’ 。
您能否向我解釋'yield'關鍵字在Enumerable方面的工作原理?例如。我不明白如何在下面的程序代碼返回類型的對象的IEnumerable:在C#中解釋yield關鍵字
如果我將鼠標懸停在「.Current」它說,我這‘獲取的元素在枚舉的當前位置’ 。
什麼MSDN天:
收率關鍵字信號給編譯器的方法,其中,它 出現是迭代器塊。編譯器生成一個類來實現在迭代器塊中表達的行爲 。在 迭代器塊中,yield關鍵字與返回 關鍵字一起用於爲枚舉器對象提供值。例如,在foreach語句的每個循環中返回值 。的
yield return
回報Collection of Object
而不是返回從DotNetPerls一個single object
static void Main(string[] args) { int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // supposed u need to find all the numbers which are greater then 5 // in general it could have been done like foreach (int number in numbers) { if (number > 5) { Console.WriteLine(number); } } // what if u needed the numbers that are greater then 5 multiple times, each time you would have to start a loop // yield return helps to return a collection of int var needed_numbers = NeededNumbers(numbers); foreach (int neededNumber in needed_numbers) { Console.WriteLine(neededNumber); } } private static IEnumerable<int> NeededNumbers(int[] nums) { foreach (int number in nums) { if (number > 5) { yield return number; } } }
報價
:
在簡單的詞
yield return語句在語義上等價於語句返回 語句(它將控制流傳遞給調用方法),接着 通過foreach循環的下一次迭代中的yield語句執行goto。