按位枚举(flags)的使用
按位枚举是为标记相互包含而使用的,每个成员被赋给一个唯一的按位值。
用按位或运算符(|)来组合按位标记。用按位和运算符(&)来确定一个标记的存在。
从组合状态中去掉一个元素用& (~)。
示例代码:
用按位或运算符(|)来组合按位标记。用按位和运算符(&)来确定一个标记的存在。
从组合状态中去掉一个元素用& (~)。
示例代码:
1using System;
2using System.Collections.Generic;
3using System.Text;
4
5namespace ConsoleApplication1
6{
7 class Program
8 {
9 [Flags]
10 public enum Contribution
11 {
12 Pension=0x01,
13 ProfitSharing=0x02,
14 CreditBureau=0x04,
15 SavingsPlan=0x08,
16 All = Pension | ProfitSharing | CreditBureau | SavingsPlan
17 }
18 public class Employee
19 {
20 private Contribution prop_contributions;
21 public Contribution contributions
22 {
23 get { return prop_contributions; }
24 set { prop_contributions = value; }
25 }
26 }
27
28 public class Starter
29 {
30 public static void Main()
31 {
32 Employee bob = new Employee();
33 bob.contributions = Contribution.ProfitSharing | Contribution.CreditBureau;
34 if ((bob.contributions & Contribution.ProfitSharing) == Contribution.ProfitSharing)
35 {
36 Console.WriteLine("Bob enrolled in profit sharing");
37 Console.WriteLine(bob.contributions);
38 bob.contributions = bob.contributions & (~Contribution.ProfitSharing);
39 Console.WriteLine(bob.contributions);
40 }
41 }
42 }
43 }
44}
2using System.Collections.Generic;
3using System.Text;
4
5namespace ConsoleApplication1
6{
7 class Program
8 {
9 [Flags]
10 public enum Contribution
11 {
12 Pension=0x01,
13 ProfitSharing=0x02,
14 CreditBureau=0x04,
15 SavingsPlan=0x08,
16 All = Pension | ProfitSharing | CreditBureau | SavingsPlan
17 }
18 public class Employee
19 {
20 private Contribution prop_contributions;
21 public Contribution contributions
22 {
23 get { return prop_contributions; }
24 set { prop_contributions = value; }
25 }
26 }
27
28 public class Starter
29 {
30 public static void Main()
31 {
32 Employee bob = new Employee();
33 bob.contributions = Contribution.ProfitSharing | Contribution.CreditBureau;
34 if ((bob.contributions & Contribution.ProfitSharing) == Contribution.ProfitSharing)
35 {
36 Console.WriteLine("Bob enrolled in profit sharing");
37 Console.WriteLine(bob.contributions);
38 bob.contributions = bob.contributions & (~Contribution.ProfitSharing);
39 Console.WriteLine(bob.contributions);
40 }
41 }
42 }
43 }
44}