枚举

枚举

枚举的底层数据类型,默认为int,同时可以设置除char外的所有整型。

枚举本身可以有访问修饰符,但枚举的成员始终是公共的,不能有任何访问修饰符。其中枚举本身的访问修饰符仅能使用public和internal。
枚举的定义可以与类平级,也可以作为类的成员,但不能放在函数中。
枚举类型的本质是什么呢?枚举类型是值类型,并且隐式地继承自System.Enum类型,但这种继承关系只能由编译器生成,不允许手工指定。非常奇妙的事情是,System.Enum本身不是枚举类型,它虽然直接继承自System.ValueType,但本身却是一个引用类型。所以可以这样说,值类型都是派生自System.ValueType,但派生自System.ValueType的却不全是值类型,这个System.Enum类型就是唯一的特例。

标志枚举

  • 使用Flag特性修饰
  • 枚举成员的值应以2的幂进行赋值

成员常量

默认情况下,第一个枚举值为0,后面每个枚举值递增1,但可以改变。枚举的成员不能相同,但其值可以相同。

enum Week : int
{
    Mondy = 5,         //5
    Tuesday,            //6
    Wednesday,       //7
    Thursday = 1,    //1
    Firday,              //2
    Staurday,          //3
    Sunday             //4

使用建议

  • 如果参数、返回值、变量等类型可以枚举(要考虑到分类的稳定性),则尽量使用枚举
  • 枚举的命名一般使用名词或名词组合,简单枚举使用单数,标志枚举使用复数
  • 大多数情况下,使用int作为枚举类型,除了以下情况:
    • 是标志枚举,且标志多于32个时(超过了int类型的取值范围)
    • 枚举可能被大量且频繁地使用,为了节约空间而使用小于int的类型
    • 不得不使用其他类型的情况
  • 不要在枚举成员中使用“FirstValue、LastValue”这样的命名
posted @ 2019-06-03 20:08  Allen2015  阅读(201)  评论(0编辑  收藏  举报