标记枚举(flags)的使用
时间:2010-09-18 来源:四海清一
标记枚举是为标记相互包含而使用的,每个成员被赋给一个唯一的按位值。
用按位或运算符(|)来组合按位标记。用按位和运算符(&)来确定一个标记的存在。
从组合状态中去掉一个元素用& (~)。
示例代码:
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
5
namespace 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
}
using System;2
using System.Collections.Generic;3
using System.Text;4

5
namespace ConsoleApplication16

{7
class Program8
{9
[Flags]10
public enum Contribution11
{12
Pension=0x01,13
ProfitSharing=0x02,14
CreditBureau=0x04,15
SavingsPlan=0x08,16
All = Pension | ProfitSharing | CreditBureau | SavingsPlan17
}18
public class Employee19
{20
private Contribution prop_contributions;21
public Contribution contributions22
{23
get
{ return prop_contributions; }24
set
{ prop_contributions = value; }25
}26
}27

28
public class Starter29
{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
}
相关阅读 更多 +











