c#中列表值类型的枚举器

时间:2016-12-08 09:40:17

标签: c#

我来到了文章https://codeblog.jonskeet.uk/2010/07/27/iterate-damn-you

我发现List的GetEnumerator的签名是:

    //     Returns an enumerator that iterates through the
    public Enumerator GetEnumerator();

枚举器是:

    // Summary:
    //     Enumerates the elements of a System.Collections.Generic.List`1.
    public struct Enumerator : IEnumerator<T>, IDisposable, IEnumerator

好像我真的无法理解这个解决方案的原因。为什么列表不返回IEnumerator<T>接口?在下面的例子中,这个解决方案看起来很奇怪(修改后的例子来自文章一点点(简要说明)):

static void ShowNext(IEnumerator<int> iterator)
{
    var message = iterator.MoveNext() ? iterator.Current.ToString() : "Done";
    Console.WriteLine(message);
}

static void Main()
{
    List<int> values = new List<int> { 1, 2 };
    var iterator = values.GetEnumerator();
    {
        ShowNext(iterator);
        ShowNext(iterator);
        ShowNext(iterator);
    }
    Console.ReadLine();
}

答案是&#34; 1 \ n 1 \ n 1 \ n&#34;

0 个答案:

没有答案