.NET枚举大小?

时间:2009-10-14 02:44:24

标签: .net enums

.NET中的枚举可以有多少条目?

6 个答案:

答案 0 :(得分:12)

我很确定基础类型是整数类型(不一定是int)。此页面here表明:

  

枚举的已批准类型是byte,sbyte,short,ushort,int,uint,long或ulong。基础类型指定为每个枚举器分配多少存储空间。

  

与任何常量一样,对枚举的各个值的所有引用都在编译时转换为数字文字。

所以我建议唯一的限制是long/ulong的范围(以及数十亿)和编译器中允许的符号空间(如果你是的话,你最有可能首先触及这个限制)实际上创建了真正大量的枚举。)

如果为枚举指定较小的类型(例如short),则范围将相应减少。

答案 1 :(得分:6)

18,446,744,073,709,551,616 (无符号64位整数的最大值)。

枚举可以基于:

  • 字节
  • 为SByte
  • 的Int32
  • UInt32的
  • 的Int16
  • UINT16
  • 的Int64
  • UINT64

答案 2 :(得分:3)

它取决于枚举的基础类型(见下文)。最大条目数将是最大字节数,长数等

enum Stuff : byte
{
...
}

将具有与

不同的最大条目数
enum Stuff : long
{
...
}

答案 3 :(得分:3)

请记住,如果需要按位操作,则不同的非组合值的数量取决于所使用的整数类型中的位数。

例如,32位整数具有32个可能值,64位整数具有64个可能值。这里有更多内容:flagsattribute - negative values?

答案 4 :(得分:2)

您可以根据任何整数类型定义枚举(因此可以为该整数大小提供尽可能多的条目)。

答案 5 :(得分:2)

因为它们不需要是唯一的...尽可能多的你可以逃脱,直到你打破编译器...但听起来你已经在滥用它们了......

有关信息:

enum Foo
{
    A = 1,
    B = 1,
    C = 1
}

(在现实世界中这不应该是一个问题!!!)