【发布时间】:2021-04-16 20:50:03
【问题描述】:
我有3个关于IEnumerable<T>和IEnumerator<T>接口的问题:
-
为什么不用
IEnumerator IEnumerator.GetEnumerator(),因为它是接口方法? -
为什么不能公开?
-
为什么返回值 Current 应该是一个对象,即使我知道具体类型?
代码:(问题已标记)
public class myIEnumCollection : IEnumerable<int>
{
public IEnumerator GetEnumerator() // 1)
{
return new myIEnumerator();
}
IEnumerator<int> IEnumerable<int>.GetEnumerator(){ // 2)
throw new NotImplementedException();
}
}
public class myIEnumerator: IEnumerator<int> {
public int Current{get; private set; } = 0;
object IEnumerator.Current => Current; // 3)
public bool MoveNext(){
Current++;
return true;
}
public void Reset() {
Current = 0;
}
public void Dispose(){
}
}
谢谢!
【问题讨论】:
-
"为什么它不会崩溃?" - 如果您最终调用它,它将(带有
NotImplementedException)。你根本没有展示你是如何使用它的。总的来说,我发现您的问题很难理解 - 部分原因是您在一篇文章中提出了四个问题。如果您在每个帖子中问 一个 问题,Stack Overflow 的效果会更好。 -
我没有使用它(空的主要方法)。目的是让它可运行
-
我希望现在更好。
标签: c# interface ienumerable