【发布时间】:2021-08-25 06:06:24
【问题描述】:
List为什么要定义这三个方法?
public Enumerator GetEnumerator()
=> new Enumerator(this);
IEnumerator<T> IEnumerable<T>.GetEnumerator()
=> new Enumerator(this);
IEnumerator IEnumerable.GetEnumerator()
=> new Enumerator(this);
他们都在做同样的事情。仅仅拥有这个还不够吗:
public Enumerator GetEnumerator()
=> new Enumerator(this);
【问题讨论】:
-
Enumerator GetEnumerator()让它返回一个结构枚举器以在foreach循环中使用,而无需分配。IEnumerator<T> IEnumerable<T>.GetEnumerator()让它从IEnumerable<T>接口实现IEnumerator<T> GetEnumerator()方法,所以你可以做IEnumerable<T> x = new List<T>(); foreach (var item in x) ...
标签: c# interface ienumerable ienumerator explicit-interface