.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