结构和枚举
大约 1 分钟
结构和枚举
结构
- 结构属于值类型,具有值类型特征;
- 结构是隐式密封的,不能被继承;
- 结构的变量不能为 null;
- 结构和类一样可以实现接口;
- 预定义的简单类型(int、short …)在 .Net 中都实现为结构。
枚举
语法
enum Name:Type // Type 可以是底层类型的任何值,成员名称不能重复,成员的值可以重复
{
ele1 = val1, // 使用逗号分隔
...
eleN = valN
}
位标识
位标识能够实现一个值表示多个成员
确定需要多少个位标识
确定每个位置的含义并命名
使用按或|运算符保持该位标志的字中的适当的位
使用按位与&或HasFlag方法解开位标识
[Flags] // 特性标志为[ ]加字符串,特性可以与方法和属性相同的方式接受参数 enum Season: uint { Spring = 0x01, Summer = 0x02, Autumn = 0x04, Winter = 0x08 } // 采用十六进制,每个十六进制数字在计算机二进制中占用4位,0000-1111 // 例子中的四个成员分别位 0001、0010、0100、1000 // 如此采用按位与、按位或通过一个十六进制数字就能得知包含多个成员 Season s1 = Season.Spring | Season. Summer | Season. Winter ; // 二进制为1011 = 0001|0010|1000 bool isSpring = s1.HasFlag( Season.Spring | Season. Summer ); // HasFlag 可以检测多个位标志 bool isSummer = ( s1 & Season.Summer ) == Season.Summer; // 实现的效果同HasFlag一样 // 如果使用了[Flags]则输出Season.Spring ,Season. Summer , Season. Winter Console.WriteLine( s1.toString());