【发布时间】:2020-08-04 19:33:39
【问题描述】:
我实现了 IEnumerable 和 IEnumerator 的通用版本。在 IEnumerator 我有两个当前属性 1-T 电流 2- IEnumerator.Current 第一:为什么我有两个当前的财产? 第二:当我将调试点放在第二个属性中时,我看到这个属性永远不会执行,当我从这个属性更改返回值时,我的代码中没有任何变化。 请有人描述一下
public class Seller<T> : IEnumerable<T>
{
T[] _array;
public Seller(T[] list)
{
_array = list;
}
public IEnumerator<T> GetEnumerator()
{
return new UserDefinedEnum<T>(_array);
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
public class UserDefinedEnum<T> : IEnumerator<T>
{
int _index = -1;
T[] _array;
public UserDefinedEnum(T[] list)
{
_array = list;
}
public T Current
{
get
{
return _array[_index];
}
}
object IEnumerator.Current
{
get
{
return null;
}
}
public void Dispose()
{
}
public bool MoveNext()
{
_index++;
return _index < _array.Length;
}
public void Reset()
{
_index = -1;
}
}
【问题讨论】:
标签: c# ienumerable ienumerator