我实现了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;
}
}