按位枚举(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}
posted @ 2007-10-08 16:13  sunfishlu  阅读(1587)  评论(0编辑  收藏  举报