黑马程序员---枚举

-> 枚举
枚举是由程序员定义的类型,与类或结构一样。
-> 与结构一样,枚举是类型,因此直接存储它们的数据,而不是分开存储成引用和数据
-> 枚举只有一种类型的成员:命名的整数值常量
每个枚举类型都有一个底层整数类型,默认是int
-> 每个枚举成员被赋值一个底层类型的常量值
-> 在默认情况下,编译器把第一个成员赋值为0,并对每一个后续成员赋的值比前一个成员多1。
可以把枚举值赋给枚举类型变量。注意可以把成员字面量赋给变量,或从另一个相同类型的变量复制值。
->设置底层类型和显示值
可以通过把冒号和类型名放在枚举名之后已使用int以外的整数类型。类型可以是任何整数类型。所有成员常量都属于枚举的底层类型。
enum TrafficLight:ulong{...}
成员常量的值可以是底层类型的任何值。要显式地设置一个成员的值,在枚举声明中的变量名之后使用初始化表达式。
enum TrafficLight{Green = 10,Yellow=15,Red=15} // 可以是重复的值
-> 隐式成员编号
可以显式地赋值给任何成员常量。
-> 关联到成员名称的值不需要是独特的
-> 位标志
程序员们长期使用单字的不同为作为表示一组开/关标志的紧凑方法。
一般步骤如下:
1、确定需要多少个位标志,并选择一种有足够多位的无符号类型来保持它。
2、确定每个比特位置代表什么,并给它们一个名称。声明一个选中的整数类型的枚举,每个成员由一个比特位置表示。
3、使用按位或(OR)运算符设置保持该位标志的字中的适当的位
4、使用按位与(AND)运算符,或HasFlag方法解开位标志。
...
-> Flags特性
特性看起来是放在类声明的上面一行的在方括号之间的字符串。特性根部不能改变计算。但是,它提供几个遍历特征:
1、它通知编译器、对象浏览器和其他观察这段代码的工具该美剧的成员将要被结合为位标志,而不是只作为分开的值使用。这使浏览器更合适地解释该枚举类型的变量
2、它允许一个枚举的ToString方法,以对位标志的值提供更合适的格式化。ToString方法接受一个枚举值并把它和枚举的常量成员的值做比较。如果它匹配了其中的一个成员,ToString返回该成员的字符串名称。
-> 关于枚举的补充
枚举只有歹意的成员类型:声明的成员常量。
-> 不能对成员使用修饰符。它们都隐式地具有和枚举相同的可访问性。
-> 由于成员是常量,即使在没有该枚举类型的变量时它们也可以访问他。使用枚举类型名,跟着一个点和成员名。
枚举是一个独特的类型。比较不同枚举类型的成员会导致一个编译器错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值