现在,当我过去常常使用嵌入式系统和严重的内存限制时,我记得我们必须非常清楚使用的类型以及它们的使用方式。现在,Windows程序员通常只是因为你有几GB的内存而浪费空间。在任何情况下,我都不愿意在没有必要的情况下浪费,因为如果每个应用程序(和操作系统)都这样做,那么它就会累积,最终会出现一个缓慢的PC。
话虽如此,我在考虑C#中的枚举类型或实际上是.NET,因为它与您使用的语言无关。例如,如果我定义这样的枚举类型:
enum FreeEnumeration {
One,
Two,
Three
}
在物理内存中分配时,它会占用与此字节完全相同的字节数:
enum SpreadEnumeration {
One = 1000,
Two = 2000,
Three = 3000
}
对于那些没有得到重点的人,在某些(早期)编译器中,枚举通常作为查找表存储在内存中,因此第二个将占用大约3000个插槽。
现在,我倾向于相信在.NET中它们不是查找表,并且会占用3个整数的空间以及其他任何信息。还是我弄错了?只是好奇,我不想因为我想要懒惰而用零填满记忆。
答案 0 :(得分:2)
enum
的大小只是int
(默认情况下)。有关详细信息,请参阅https://stackoverflow.com/a/20944766/396746。
枚举引用结构的大小就是其中元素的数量。