Почему делают массивы в .NET только реализуют IEnumerable и не IEnumerable <T>?

Я реализовывал свой собственный класс ArrayList и был оставлен удивленным, когда я понял это

public System.Collections.Generic.IEnumerator<T> GetEnumerator() {
    return _array.GetEnumerator();
}

не работал. Какова причина, массивы не реализуют IEnumerator в.NET?

Есть ли какое-либо обходное решение?

Спасибо

42
задан devoured elysium 5 May 2010 в 13:47
поделиться

1 ответ

Массивы действительно реализуют IEnumerable , но это делается как часть специальных знаний CLI о массивах. Это работает так, как если бы это была явная реализация (но это не так: это делается во время выполнения). Многие инструменты не показывают эту реализацию, это описано в разделе Remarks обзора класса Array .

Вы можете добавить приведение:

return ((IEnumerable<T>)_array).GetEnumerator();

Обратите внимание, что старый охват MSDN (pre docs.microsoft.com) несколько раз менялся с разными версиями .NET, проверьте раздел примечания .

62
ответ дан 26 November 2019 в 23:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: