zoukankan      html  css  js  c++  java
  • 枚举

    枚举

    枚举的底层数据类型,默认为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”这样的命名
  • 相关阅读:
    lightoj 1151 Snakes and Ladders 期望 高斯消元
    lightoj 1104 Birthday Paradox 概率
    lightoj 1079 Just another Robbery 概率 背包
    集合的划分
    线性筛法
    学姐出的毒奶题之yjj
    [poj] 1149 PIGS || 最大流经典题目
    [poj] 3057 Evacuation
    [poj] 1273 Drainage Ditches
    [poj] 2891 Strange Way to Express Integers
  • 原文地址:https://www.cnblogs.com/home-wang/p/10949826.html
Copyright © 2011-2022 走看看