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

时间:2010-08-11 11:04:36

标签: c# collections

我对C#语言中各种类型之间的差异感到很困惑。具体

  • 的IEnumerable
  • IEnumerator的

2 个答案:

答案 0 :(得分: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}");
    }
}

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

答案 1 :(得分:2)

IEnumerable可以枚举的集合。

IEnumerator通过集合实际管理位置的东西,提供对当前项目的访问,并允许您继续前进到下一个项目。

因此,可以使用IEnumerator来浏览IEnumerable