相关疑难解决方法(0)

为什么BCL Collections使用struct枚举器而不是类?

我们都知道可变结构一般是邪恶的.我也非常确定因为IEnumerable<T>.GetEnumerator()返回类型IEnumerator<T>,结构会立即被装入引用类型,比它们只是引用类型的开销要多得多.

那么为什么在BCL泛型集合中,所有枚举器都是可变结构?当然必须有一个很好的理由.我唯一想到的就是可以轻松复制结构,从而在任意点保留枚举器状态.但是Copy()IEnumerator接口上添加一个方法本来就不那么麻烦了,所以我不认为这本身就是一个逻辑上的理由.

即使我不同意设计决定,我也希望能够理解它背后的原因.

.net c# ienumerator base-class-library

53
推荐指数
2
解决办法
4853
查看次数

标签 统计

.net ×1

base-class-library ×1

c# ×1

ienumerator ×1