None=1在以下枚举类中引用了什么
本文关键字:引用 什么 枚举 None | 更新日期: 2023-09-27 18:15:44
我在浏览一些示例代码时注意到以下枚举声明。None=1是什么意思?
public enum ButtonActions
{
None = 1,
Clear,
Insert,
Delete,
Cancel,
Close
}
它标记None
的值,然后从那时起,所有以下值都隐式向上计数:
Clear
将为2Insert
将为3
…
通常,在没有任何标记的情况下,enum
默认为从0开始并向上计数。
附带说明:您可以随时指定一个新的"起始"值,然后重新开始订购。例如:
public enum ButtonActions
{
None = 1,
Clear,
Insert,
Delete = 7,
Cancel,
Close
}
现在,它将是:
None
:1Clear
:2Insert
:3Delete
:7Cancel
:8Close
:9
在C#中,enum
s是底层积分类型的强类型命名常数集。尽管他们是自己的类型,有自己的方法,但在窗帘下面,一切都只是数字。当你将一个enum
与另一个进行比较时,它或多或少是一个积分比较。
它们的设计方式是,知道或关心命名常量所代表的实际数字并不是绝对必要的——这就是它们存在的原因,这样就不会在代码中到处写3
和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;
}
这只是意味着你可以使用来引用它
ButtonActions bt = ButtonActions.None;
或
ButtonActions bt = (ButtonActions)1;
用于强制枚举从1开始计数,而不是从0开始计数。
通常在制作enum
时,它们表示为从0开始的int
。
我不完全确定,但也许通过这种方式,枚举将从1开始。您可以通过简单的"if(None == 1
("并检查返回值来尝试它。
正如我所说,我不是100%确定,但你可以试试。