C# 向枚举标志添加两个附加值
我可以在这里添加的数值有限制吗C# 向枚举标志添加两个附加值,c#,C#,我可以在这里添加的数值有限制吗 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,
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
}
我想再加两个值,我假设应该是两倍:
- 8192
- 16384
int
因此,您可以存储从-2147483648到2147483647的值
在下面或上面,您需要指定另一种类型,如:
public enum AssignmentType : long or ulong
使用ulong
最多可达到18446 744 073 709 551 615
有时有人认为使用小型类型可以优化,但事实上,由于CPU体系结构的原因,x32系统上小于32位或x64系统上小于64位的情况并非如此。仅当需要使用嵌入式系统和/或在包含多个数据的缓冲区(如二进制结构/缓冲区)中使用枚举值时,使用字节或短字符(例如)这样做才有用
如果我记得的话,第一个.NET Framework AnyCPU根据平台的不同有int
x32或x64,但下一个版本将所有系统的int
设置为4字节,这让我很困惑。。。但它是可以理解的,因为它存在可移植性问题,而不是可移植性优势
当然,默认情况下,所有.NET枚举都基于int
因此,您可以存储从-2147483648到2147483647的值
在下面或上面,您需要指定另一种类型,如:
public enum AssignmentType : long or ulong
使用ulong
最多可达到18446 744 073 709 551 615
有时有人认为使用小型类型可以优化,但事实上,由于CPU体系结构的原因,x32系统上小于32位或x64系统上小于64位的情况并非如此。仅当需要使用嵌入式系统和/或在包含多个数据的缓冲区(如二进制结构/缓冲区)中使用枚举值时,使用字节或短字符(例如)这样做才有用
如果我记得的话,第一个.NET Framework AnyCPU根据平台的不同有int
x32或x64,但下一个版本将所有系统的int
设置为4字节,这让我很困惑。。。但它是可以理解的,因为它存在可移植性问题,而不是可移植性优势
是的,你可以。没问题 查看微软官方文档,否则我建议您也可以查看
如果您想知道为什么这些值会加倍,请查看
FlagsAttribute
。它使您有机会一次选择多个枚举值。是的,您可以选择。这没有问题
查看微软官方文档,否则我建议您也可以查看
如果您想知道为什么这些值会加倍,请查看
FlagsAttribute
。它使您有机会一次选择多个枚举值。这是否回答了您的问题@funie200这个答案有点神秘。我的值是否在该限制范围内?枚举的默认基础类型是int
,因此添加任何有效的int
值都可以。这就是说,这看起来真的像是一个枚举,旨在拥有FlagsAttribute
,否则添加2@AndrewTruckle您的值在int
范围内,因此是的,它们应该可以。对于这种情况,最好的做法是尝试一下。我投票决定结束这个问题,因为它的答案是快速简单的文档阅读。IMHO,这是一个非常低质量的问题,来自一个如此高声誉(10K+)的会员。这回答了你的问题吗@funie200这个答案有点神秘。我的值是否在该限制范围内?枚举的默认基础类型是int
,因此添加任何有效的int
值都可以。这就是说,这看起来真的像是一个枚举,旨在拥有FlagsAttribute
,否则添加2@AndrewTruckle您的值在int
范围内,因此是的,它们应该可以。对于这种情况,最好的做法是尝试一下。我投票决定结束这个问题,因为它的答案是快速简单的文档阅读。IMHO,这是一个非常低质量的问题,来自一个如此高声誉(10K+会员)。