2

在 C# 中,有人告诉我,如果首先将诸如 List(T) 之类的容器类向上转换为诸如 IEnumerable 之类的容器接口,然后随后使用 foreach 对其进行迭代,则将创建运行时垃圾。此外,即使完全沮丧,我也被告知迭代 Collection(T) 也会在堆上创建引用。我知道这是对 GetEnumerator() 的虚拟调用的结果,它可能返回引用或值类型结果。

检查 MSDN 文档中的值类型清楚地将所有枚举列为值类型。如果枚举由枚举器列表组成,那么这些枚举器不是按照文档的值类型吗?他们是盒装的吗?还是彼此完全不相关但名称相似?还是完全不同的东西?

我不确定如何统一这两个陈述,我希望有人可以更清楚地向我解释。

谢谢。

编辑:考虑到评论者对使用“从不”和“不必要”等词的建议,问题重新措辞

4

1 回答 1

2

Enumerations ( enums) 与 Enumerators 无关。

有人告诉我要避免...

似乎是一个非常不成熟且不必要的优化。

于 2012-04-17T10:13:02.250 回答