yield return私は自分が書いているコードのいくつかを使ってステートメントをテストしてきました。私には2つの方法があります:
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
- MyListCollection-> 1847
私はこれの理由を本当に見ることができません、私は何かを逃していますか、それともこれは正常ですか?