在以下枚举类中,None = 1是什么?

时间:2013-05-29 06:25:45

标签: c# enums

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

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

4 个答案:

答案 0 :(得分:35)

它标记了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#中,enum基础整数类型的强类型命名常量集。即使它们是他们自己的类型和他们自己的方法,在窗帘下面它只是数字。当您将一个enum与另一个3进行比较时,它或多或少是一个完整的比较。

它们的设计方式使得绝对必要知道或关心命名常量所代表的实际数字 - 这实际上是为什么它们存在,所以你不是不要在代码中随处写5和{{1}}。但这并没有改变每个命名常量映射到一个数字,最终这一事实,因此在很多情况下,对这些控制权进行精确控制很好 他们各自代表的数字。

答案 1 :(得分:5)

来自MSDN;

  

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

     

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

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

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

  •   
     

如果未指定枚举器中元素的值   列表,值会自动增加 1 。创建枚举时,选择最逻辑的默认值并将其赋值为零。如果在创建时未明确指定值,则会导致所有枚举具有该默认值。

我认为最重要的部分之一是我们使用这些值的原因是位标志。与FlagsAttribute一起使用,您可以使用按位操作,例如 AND OR NOT XOR 枚举元素。 MSDN页面的示例;

[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;
}

答案 2 :(得分:0)

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

我不是很确定,但也许通过这种方式,枚举将从1开始。 您只需“if(None == 1)”并检查返回值即可尝试。

正如我所说,我不是百分百肯定,但你可以试试。

答案 3 :(得分:0)

这只是意味着你可以使用

来引用它
ButtonActions bt = ButtonActions.None;

OR

ButtonActions bt = (ButtonActions)1;

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