.NET中有多少个条目可以枚举?.NET枚举大小?
回答
我很确定底层类型是整数类型(不一定是int
)。此页面here指出:
枚举的批准类型是byte,sbyte,short,ushort,int,uint,long或ulong。基础类型指定为每个枚举器分配多少存储空间。
和:
正如任何恒定的,到一个枚举的各个值的所有引用在编译时转换为数字文字。
所以我建议,唯一的限制将是long/ulong
(以及数十亿)的范围,并在编译器枚举(你很可能会打击这一限制第一,如果你实际上是在允许的符号空间创造真正巨大的枚举)。
如果您为枚举指定较小的类型(例如short
),则范围将相应减少。
18,446,744,073,709,551,616(无符号的64位整数的最大值)。
枚举可以基于:
- 字节
- 为SByte
- 的Int32
- UInt32的
- 的Int16
- UINT16
- 的Int64
- UINT64
我不能相信我在写这一点,但...它应该大一,18,446,744,073,709,551,616(0至18,446,744,073,709,551,615,含)。 – 2009-10-14 03:06:44
你知道吗,我不能相信你写的是(我怀疑cut'n'paste),但+1是肛门^^^ ^^ – paxdiablo 2009-10-14 03:16:43
谁把Int64.MaxValue放在头上? – 2009-10-14 03:21:44
您可以基于任何整数类型定义枚举(因此具有与该整数大小相同的条目数)。
它取决于枚举的基本类型(请参见下文)。那么最大的条目数是字节,长的最大数量等
enum Stuff : byte
{
...
}
将有不同数量最多的条目比
enum Stuff : long
{
...
}
记住,如果按位操作需要,不同的非组合值的数量取决于所用整数类型的位数。
例如,一个32位的整数有32个可能的值,而一个64位的整数有64个可能的值。这里有更多关于这方面的内容:flagsattribute - negative values?
因为它们不需要是独一无二的...尽可能多地摆脱它,直到你打破编译器......但听起来你已经在滥用它们了。 ..
对于信息:
enum Foo
{
A = 1,
B = 1,
C = 1
}
(这不应该是在现实世界中使用的一个问题!)
- 1. 枚举大小<String>
- 2. 采用枚举大集C#.NET使用枚举项目C#
- 3. 枚举大小(以字节为单位)
- 4. 存储大小未知:枚举
- 5. 如何控制枚举的列大小?
- 6. C#标志枚举字大小
- 7. 任意大小的枚举值
- 8. 大标志枚举
- 9. 扩展.NET MembershipCreateStatus枚举
- 10. 标准.NET侧枚举
- 11. .NET枚举继承替代
- 12. protobuf-net枚举序列化
- 13. .NET数据库枚举
- 14. .net自定义配置如何区分大小写解析一个枚举ConfigurationProperty
- 15. 最小枚举大小在Delphi中不起作用
- 16. 大量的按位枚举
- 17. Ada:如何将枚举枚举为小写
- 18. 转换枚举来枚举
- 19. 枚举的枚举[JAVA]
- 20. 带枚举的MySQL枚举
- 21. Java类枚举枚举类
- 22. 重新枚举枚举
- 23. Java枚举找到枚举
- 24. 在枚举中枚举
- 25. protobuf-net到.proto生成枚举冲突?
- 26. Flex,.NET Web服务和数值枚举
- 27. .NET Compact Framework,枚举窗口(Windows Mobile)
- 28. 特定的.NET XML枚举过程
- 29. .NET SqlClient错误号枚举类型
- 30. 如何在.net 3.5中枚举Enum.GetValues?
这可能是一个有效的问题,如果他使用[国旗]枚举。 – tster 2009-10-14 02:53:33