Мы все знаем, что изменчивые структуры являются злыми в целом. Я также уверен, что, поскольку IEnumerable<T>.GetEnumerator()
возвращает тип IEnumerator<T>
, структуры сразу же помещаются в ссылочный тип, стоимость которых больше, чем если бы они были просто ссылочными типами для начала.
Итак, почему в общих коллекциях BCL все перечисляемые переменные структуры? Разумеется, должна была быть веская причина. Единственное, что происходит со мной, это то, что структуры легко копируются, тем самым сохраняя состояние перечислителя в произвольной точке. Но добавление метода Copy()
к интерфейсу IEnumerator
было бы менее проблематичным, поэтому я не считаю это логическим оправданием самостоятельно.
Даже если я не согласен с дизайнерским решением, я хотел бы уметь понять причину этого.