Почему массивы C # используют ссылочный тип для Enumeration, а List использует изменяемую структуру?

Из того, что я читал, было принято дизайнерское решение, чтобы определенные типы перечислителей коллекций были изменяемыми структурами, а не ссылочными типами из соображений производительности. List.Enumerator - самый известный.

Я исследовал старый код, в котором использовались массивы, и был удивлен, обнаружив, что массивы C # возвращают тип SZGenericArrayEnumerator в качестве своего универсального типа перечислителя, который является ссылочным типом.

Мне интересно, знает ли кто-нибудь, почему универсальный итератор Array был реализован как ссылочный тип, когда во многих других коллекциях, критичных к производительности, вместо этого использовались изменяемые структуры.

23
задан Chuu 7 February 2012 в 21:07
поделиться