我来到了文章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;