C#各种System.Collection(.Generic)类型之间的差异

Jie*_*eng 3 c# collections

我对C#语言中各种类型之间的差异感到很困惑.特别

  • IEnumerable的
  • IEnumerator的

Jon*_*eet 14

IEnumerable<T>表示可以枚举的序列- 例如列表.

IEnuerator<T>有效地表示序列中的光标.

所以想象一下你有一个序列 - 你可以同时用几个"游标"迭代它.例如:

List<string> names = new List<string> { "First", "Second", "Third" };
foreach (string x in names)
{
    foreach(string y in names)
    {
        Console.WriteLine("{0} {1}");
    }
}
Run Code Online (Sandbox Code Playgroud)

这里,List<string>implements IEnumerable<string>foreach每个调用的循环GetEnumerator()来检索IEnumerator<string>.因此,当我们处于内部循环的中间时,有两个独立的游标迭代单个序列.