Из того, что я прочитал, было принято конструктивное решение для определенных типов перечислений Collections, которые могут быть изменчивыми структурами вместо ссылочных типов по соображениям производительности. List.Enumerator является наиболее известным.
Я изучал старый код, который использовал массивы, и с удивлением обнаружил, что массивы С# возвращают тип SZGenericArrayEnumerator в качестве своего общего типа перечисления, который является ссылочным типом.
Мне интересно, знает ли кто-нибудь, почему массивный итератор Array был реализован как ссылочный тип, когда многие другие критически важные группы производительности использовали вместо этого изменяемые структуры.