枚举 互斥 和标签
1 public class Student 2 { 3 public Student() 4 { } 5 public int Age { get; set; } 6 public string Name { get; set; } 7 //性格 8 public States Xingge { get; set; } 9 }
Student类
下面是枚举
public enum States { 可爱, 活泼, 勤奋, 认真 }
主程序
static void Main() { Student stu = new Student(); stu.Name = "小明"; stu.Age = 12; stu.Xingge = States.活泼; Console.WriteLine(stu.Xingge);//打印"活泼" stu.Xingge = States.活泼 | States.可爱;
//打印"活泼" 这里 打印的结果和States.活泼 | States.可爱;的顺序无关
//这和枚举中他们的顺序相关,谁在下面打印谁,即谁的值大,打印谁
Console.WriteLine(stu.Xingge);。
Console.Read(); }
22标志枚举
[Flags]//表示是标志枚举 public enum States { 可爱, 活泼, 勤奋, 认真 }
当修改States后,
stu.Xingge = States.活泼 | States.可爱;
Console.WriteLine(stu.Xingge);//打印还是活泼(因为活泼 默认值大)
还是没有满足我们打印多个性格 的愿望
因为我们不光要给States枚举增加[Flags]标签,还要给他们一一赋值
[Flags] public enum States { 可爱=1,//0001 活泼=2,//0010 勤奋=4,//0100 认真=8 }
stu.Xingge = States.可爱|States.活泼|States.认真;
Console.WriteLine(stu.Xingge);//打印"可爱,活泼,认真"
使用情况,当是互斥的情况下 用没有标签[Flags]的枚举,如人的性别,非男即女
当不是互斥的时候,如 一个文件的权限,可修改,可删除等 就用标签枚举