在下面的代码中,我创建了一种使用 Yield 打印值的方法,另一种只是简单的列表迭代。所以我的问题是这两种方法获得的输出是相同的,那么为什么我们要使用 Yield 关键字呢?另外请告诉我 Yield 关键字在应用中的具体用法。
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace YieldKeyWordEg
{
class Program
{
static void Main(string[] args)
{
Animals obj = new Animals();
Console.WriteLine("------ Using Yield ------");
foreach (var item in obj.GetName())
{
Console.WriteLine(item);
}
Console.WriteLine("------ Using List Iteration ------");
foreach (var items in obj.GetNameinList())
{
Console.WriteLine(items);
}
Console.ReadLine();
}
}
class Animals
{
public IEnumerable<string> GetName()
{
List<string> objList = new List<string>();
objList.Add("Cow");
objList.Add("Goat");
objList.Add("Deer");
objList.Add("Lion");
foreach (var item in objList)
{
yield return item;
}
}
public List<string> GetNameinList()
{
List<string> objList = new List<string>();
objList.Add("Cow");
objList.Add("Goat");
objList.Add("Deer");
objList.Add("Lion");
return objList;
}
}
}
输出:
------ Using Yield ------
Cow
Goat
Deer
Lion
------ Using List Iteration ------
Cow
Goat
Deer
Lion
最佳答案
直接来自MSDN
You use a yield return statement to return each element one at a time.When a yield return statement is reached in the iterator method, expression is returned, and the current location in code is retained. Execution is restarted from that location the next time that the iterator function is called.
编辑: 要获取详细信息,请参阅 this系列文章。
关于c# - Yield 关键字的具体用法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21907274/