在 C# 中,有人告诉我,如果首先将诸如 List(T) 之类的容器类向上转换为诸如 IEnumerable 之类的容器接口,然后随后使用 foreach 对其进行迭代,则将创建运行时垃圾。此外,即使完全沮丧,我也被告知迭代 Collection(T) 也会在堆上创建引用。我知道这是对 GetEnumerator() 的虚拟调用的结果,它可能返回引用或值类型结果。
检查 MSDN 文档中的值类型清楚地将所有枚举列为值类型。如果枚举由枚举器列表组成,那么这些枚举器不是按照文档的值类型吗?他们是盒装的吗?还是彼此完全不相关但名称相似?还是完全不同的东西?
我不确定如何统一这两个陈述,我希望有人可以更清楚地向我解释。
谢谢。
编辑:考虑到评论者对使用“从不”和“不必要”等词的建议,问题重新措辞