Я реализовывал свой собственный класс ArrayList и был оставлен удивленным, когда я понял это
public System.Collections.Generic.IEnumerator<T> GetEnumerator() {
return _array.GetEnumerator();
}
не работал. Какова причина, массивы не реализуют IEnumerator в.NET?
Есть ли какое-либо обходное решение?
Спасибо
Массивы действительно реализуют IEnumerable
, но это делается как часть специальных знаний CLI о массивах. Это работает так, как если бы это была явная реализация (но это не так: это делается во время выполнения). Многие инструменты не показывают эту реализацию, это описано в разделе Remarks обзора класса Array
.
Вы можете добавить приведение:
return ((IEnumerable<T>)_array).GetEnumerator();
Обратите внимание, что старый охват MSDN (pre docs.microsoft.com) несколько раз менялся с разными версиями .NET, проверьте раздел примечания .