我在浏览一些示例代码时注意到以下枚举声明.None = 1是什么意思?
public enum ButtonActions
{
None = 1,
Clear,
Insert,
Delete,
Cancel,
Close
}
Run Code Online (Sandbox Code Playgroud)
小智 35
它标记了值None,然后所有后续值从那时起隐含地向上计数:
Clear将是2
Insert将3
...
通常,没有任何标记,enums默认从0开始向上计数.
附注:您随时可以指定新的"起始"值,并重新开始排序.例如:
public enum ButtonActions
{
None = 1,
Clear,
Insert,
Delete = 7,
Cancel,
Close
}
Run Code Online (Sandbox Code Playgroud)
现在,它将是:
None:1
Clear:2
Insert:3
Delete:7
Cancel:8
Close:9
在C#中,enums是底层整数类型的强类型命名常量集.即使它们是他们自己的类型和他们自己的方法,在窗帘下面它只是数字.当你比较一个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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
429 次 |
| 最近记录: |