Я реализовал стандартную c версию 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;
}
}