第十五章 枚举类型和位标志
- 使用枚举类型而不是硬编码的理由:枚举类型更易编写,阅读和维护;枚举类型是强类型
- 枚举类型是值类型,不能定义任何方法,属性或事件,可利用扩展方法向枚举类型添加方法
- 枚举类型定义的值是常量值,枚举类型实际是一个结构,其中定义了一组常量字段和一个实例字段(value__)
- 枚举类型都有一个基础类型,容纳枚举类型的值(int,byte,short等)
- C#编译器将枚举类型视为基元类型,所以可用操作符(==,+,&等),实际作用于value__字段;枚举类型可以显式转换成不同的枚举类型
- ToString方法把枚举类型的实例值映射为字符串表示,可选用格式G常规,D十进制,X十六进制;同时支持Format方法格式化
- Enum.GetValues和Type.GetEnumValues返回枚举类型符号名称的数组;Enum.Parse和Enum.TryParse将符号转换成枚举类型的实例;Enum.IsDefined判断数值对于某枚举类型是否合法;Enum.ToObject将Byte,Int32等类型的实例转换成枚举类型的实例
- 位标志:经常使用枚举类型表示一组可组合的位标志(例如FileAttributes)
- 可使用[Flag]特性,调用ToString时,数值可以不再视为单独的符号,而是一组位标志的组合并返回字符串(每个枚举值都被表示为2的幂次,没有直接被定义的数值5(1+4)会返回Flag1,Flag3)</