.NET中

时间:2016-03-18 19:32:46

标签: c# .net cil gac-msil

现在,当我过去常常使用嵌入式系统和严重的内存限制时,我记得我们必须非常清楚使用的类型以及它们的使用方式。现在,Windows程序员通常只是因为你有几GB的内存而浪费空间。在任何情况下,我都不愿意在没有必要的情况下浪费,因为如果每个应用程序(和操作系统)都这样做,那么它就会累积,最终会出现一个缓慢的PC。

话虽如此,我在考虑C#中的枚举类型或实际上是.NET,因为它与您使用的语言无关。例如,如果我定义这样的枚举类型:

enum FreeEnumeration {
    One,
    Two,
    Three
}

在物理内存中分配时,它会占用与此字节完全相同的字节数:

enum SpreadEnumeration {
    One = 1000,
    Two = 2000,
    Three = 3000
}

对于那些没有得到重点的人,在某些(早期)编译器中,枚举通常作为查找表存储在内存中,因此第二个将占用大约3000个插槽。

现在,我倾向于相信在.NET中它们不是查找表,并且会占用3个整数的空间以及其他任何信息。还是我弄错了?只是好奇,我不想因为我想要懒惰而用零填满记忆。

1 个答案:

答案 0 :(得分:2)

enum的大小只是int(默认情况下)。有关详细信息,请参阅https://stackoverflow.com/a/20944766/396746

枚举引用结构的大小就是其中元素的数量。