Bac*_*ave 2 c# ienumerable ienumerator interface explicit-interface
为什么List定义了这三个方法?
public Enumerator GetEnumerator()
=> new Enumerator(this);
IEnumerator<T> IEnumerable<T>.GetEnumerator()
=> new Enumerator(this);
IEnumerator IEnumerable.GetEnumerator()
=> new Enumerator(this);
Run Code Online (Sandbox Code Playgroud)
他们都在做同样的事情。仅仅拥有这个还不够:
public Enumerator GetEnumerator()
=> new Enumerator(this);
Run Code Online (Sandbox Code Playgroud)
仅仅拥有这个还不够:
Run Code Online (Sandbox Code Playgroud)public Enumerator GetEnumerator() => new Enumerator(this);
不,它不会,因为它不会实现IEnumerable<T>or IEnumerable,其中GetEnumerator()方法的返回类型为IEnumerator<T>和IEnumerator分别。
返回类型必须匹配才能实现接口。
事实上,自己测试这个很容易:
public Enumerator GetEnumerator()
=> new Enumerator(this);
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误: