为什么你认为微软希望我们通过IEnumerable来获取IEnumerator?IEnumerator是否存在对某个给定类型的有效强制转换,以确定该类型是否可枚举?
例如,以下是错误的?
class MyClass : IEnumerator
{
...
}
MyClass myObj = new MyClass();
if(myObj as IEnumerator != null)
{
Console.WriteLine("myObj is enumerable");
}
else
{
Console.WriteLine("myObj doesn't support enumeration");
}
Run Code Online (Sandbox Code Playgroud)
Joe*_*Joe 10
您可能有两个枚举的线程 - 每个线程都需要自己的枚举器.
IEnumerable.GetEnumerator返回一个枚举器,该枚举器最初位于集合的第一个元素之前.如果你只有IEnumerator,你必须记住在使用之前重置自己,即使在单线程场景中也是如此.
IEnumerator保存执行枚举所必需的状态信息,例如数组索引等.
枚举状态信息不是可枚举对象的一部分,因此强制转换不够强大.
此外,枚举器/可枚举分离允许在同一可枚举集合上同时执行多个枚举.
| 归档时间: |
|
| 查看次数: |
482 次 |
| 最近记录: |