我一直在yield return
用我写的一些代码来测试这个语句。我有两种方法:
public static IEnumerable<String> MyYieldCollection {
get
{
wrapper.RunCommand("Fetch First From Water_Mains");
for (int row = 0; row < tabinfo.GetNumberOfRows() ; row++) //GetNumberOfRows
//will return 1000+ most of the time.
{
yield return wrapper.Evaluate("Water_Mains.col1");
wrapper.RunCommand("Fetch Next From Water_Mains");
}
}
}
和
public static List<String> MyListCollection
{
get
{
List<String> innerlist = new List<String>();
wrapper.RunCommand("Fetch First From Water_Mains");
for (int row = 0; row < tabinfo.GetNumberOfRows(); row++)
{
innerlist.Add(wrapper.Evaluate("Water_Mains.col1"));
wrapper.RunCommand("Fetch Next From Water_Mains");
}
return innerlist;
}
}
然后我foreach
在每个集合上使用一个循环:
foreach (var item in MyYieldCollection) //Same thing for MyListCollection.
{
Console.WriteLine(item);
}
有趣的是,出于某种原因,我似乎能够比MyListCollection
MyYieldCollection 更快地循环并打印出完整的内容。
结果:
- MyYieldCollection -> 2062
- 我的列表集合-> 1847
我真的看不出这是什么原因,是我遗漏了什么还是这正常?