None=1在以下枚举类中引用了什么

本文关键字:引用 什么 枚举 None | 更新日期: 2023-09-27 18:15:44

我在浏览一些示例代码时注意到以下枚举声明。None=1是什么意思?

public enum ButtonActions
{
    None = 1,        
    Clear,
    Insert,       
    Delete,
    Cancel,
    Close
}

None=1在以下枚举类中引用了什么

它标记None的值,然后从那时起,所有以下值都隐式向上计数:

Clear将为2
Insert将为3

通常,在没有任何标记的情况下,enum默认为从0开始并向上计数。

附带说明:您可以随时指定一个新的"起始"值,然后重新开始订购。例如:

public enum ButtonActions
{
    None = 1,        
    Clear,
    Insert,       
    Delete = 7,
    Cancel,
    Close
}

现在,它将是:

None:1
Clear:2
Insert:3
Delete:7
Cancel:8
Close:9

在C#中,enums是底层积分类型的强类型命名常数集。尽管他们是自己的类型,有自己的方法,但在窗帘下面,一切都只是数字。当你将一个enum与另一个进行比较时,它或多或少是一个积分比较。

它们的设计方式是,知道或关心命名常量所代表的实际数字并不是绝对必要的——这就是它们存在的原因,这样就不会在代码中到处写35。但这并不能改变这样一个事实,即每个命名的常量都映射到一个数字,最终是,因此在许多情况下,能够精确地控制它们各自代表的数字是很好的。

来自MSDN

默认情况下,枚举中每个元素的基本类型为int

以下是使用枚举而不是数字的优点类型:

  • 您可以为客户端代码明确指定哪些值对变量有效。

  • 在Visual Studio中,IntelliSense列出了定义的值。

当您没有为枚举器中的元素指定值时列表中,值会自动递增1。创建枚举时,请选择最符合逻辑的默认值,并将其设为零。如果在创建枚举时没有显式指定值,那么这将导致所有枚举都具有该默认值。

我认为最重要的部分之一是我们为什么使用这些值是位标志。使用FlagsAttribute,您可以在枚举元素上使用位运算,如ANDORNOTXORMSDN页面示例;

[Flags]
enum Days2
{
    None = 0x0,
    Sunday = 0x1,
    Monday = 0x2,
    Tuesday = 0x4,
    Wednesday = 0x8,
    Thursday = 0x10,
    Friday = 0x20,
    Saturday = 0x40
}
class MyClass
{
    Days2 weekends = Days2.Sunday | Days2.Saturday;
}

这只是意味着你可以使用来引用它

ButtonActions bt = ButtonActions.None;

ButtonActions bt = (ButtonActions)1;

用于强制枚举从1开始计数,而不是从0开始计数。

通常在制作enum时,它们表示为从0开始的int

我不完全确定,但也许通过这种方式,枚举将从1开始。您可以通过简单的"if(None == 1("并检查返回值来尝试它。

正如我所说,我不是100%确定,但你可以试试。