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
可以用这两个附加值来增加我的枚举吗?

C#当然,默认情况下,所有.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字节,这让我很困惑。。。但它是可以理解的,因为它存在可移植性问题,而不是可移植性优势

当然,默认情况下,所有.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+会员)。