我可以在此处添加的数字值是否有限制?
public enum AssignmentType
{
None = 0,
Attendant = 1,
ConductorCBS = 2,
ReaderCBS = 4,
Chairman = 8,
Mike = 16,
PlatformAttendant = 32,
Prayer = 64,
OCLM = 128,
Sound = 256,
Student = 512,
Custom = 1024,
Demonstration = 2048,
Assistant = 4096
}
我想再输入两个值,我认为应该是两倍:
可以用这两个附加值来增加我的枚举吗?
答案 0 :(得分:1)
C#,当然,所有.NET枚举默认都基于int
。
因此,您可以存储-2 147 483 648到2 147 483 647的值。
下方或上方,您需要指定其他类型,例如:
public enum AssignmentType : long or ulong
使用ulong
时,最多可以达到18446744073073709551615!
有时有人认为使用小型类型会优化,但实际上,由于CPU体系结构,如果在x32系统上少于32位或在x64系统上少于64位,则情况并非如此。仅当需要使用嵌入式系统和/或在包含多个数据的缓冲区中使用枚举值(例如在二进制结构/缓冲区中)时,才使用字节或短路等方法进行操作。
如果我还记得,第一个.NET Framework AnyCPU具有int
x32或x64,具体取决于平台,但是下一个版本将int
设置为所有系统的4字节,这让我感到困惑。但这是可理解的,因为它具有可移植性问题而不是可移植性优势。
答案 1 :(得分:1)