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);
答案 0 :(得分:7)
仅仅拥有这个还不够:
public Enumerator GetEnumerator()
=> new Enumerator(this);
不,它不会,因为那不会实现 IEnumerable<T>
或 IEnumerable
,其中 GetEnumerator()
方法的返回类型为 IEnumerator<T>
和 {{1 }} 分别。
返回类型必须匹配才能实现接口。
确实,您可以很容易地自行测试:
IEnumerator
这会产生以下错误: