Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#枚举器术语混淆_C#_.net_C# 4.0 - Fatal编程技术网

C#枚举器术语混淆

C#枚举器术语混淆,c#,.net,c#-4.0,C#,.net,C# 4.0,在C#中,我被告知,如果像List(T)这样的容器类首先向上转换到像IEnumerable这样的容器接口,然后使用foreach迭代,那么将创建运行时垃圾。此外,即使在完全向下转换时,我也被告知在集合(T)上迭代也会在堆上创建引用。我知道这是对GetEnumerator()的虚拟调用的结果,该调用可能返回引用或值类型结果 检查MSDN文档中的值类型可以清楚地将所有枚举列为值类型。如果枚举由枚举器列表组成,那么这些枚举器的值类型是否与文档中的值类型相同?它们是盒装的吗?或者彼此完全无关但名字相似?

在C#中,我被告知,如果像List(T)这样的容器类首先向上转换到像IEnumerable这样的容器接口,然后使用foreach迭代,那么将创建运行时垃圾。此外,即使在完全向下转换时,我也被告知在集合(T)上迭代也会在堆上创建引用。我知道这是对GetEnumerator()的虚拟调用的结果,该调用可能返回引用或值类型结果

检查MSDN文档中的值类型可以清楚地将所有枚举列为值类型。如果枚举由枚举器列表组成,那么这些枚举器的值类型是否与文档中的值类型相同?它们是盒装的吗?或者彼此完全无关但名字相似?或者完全是别的什么

我不知道如何统一这两种说法,我希望有人能更清楚地向我解释

谢谢

编辑:重新措辞的问题考虑了评论员关于使用“从不”和“不必要”等词的建议。

枚举(
enum
s)与枚举数无关

我被告知要避免


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

如果foreach正在执行常量运行时分配,并且我的堆很复杂,那么我不能允许发生集合。在使用XNA/Xbox 360的.NET compact framework下,每次分配一兆字节时都会停止世界垃圾收集。您没有提到或标记XNA。。。默认的假设是正常的外汇。事实上,但我的问题不是关于优化。告诉你我为什么担心。这种行为不是XNA特有的,我认为没有必要标记它。