发布:2015/12/12 16:52:33作者:管理员 来源:本站 浏览次数:1730
Flags关键字允许我们在使用.net枚举变量时,使用多个组合值,多个值的赋值方法是使用关键字“|”,
即WeekDays weekdays=WeekDays.Monday | WeekDays.Tuesday;
判断枚举是否具有该值:if( weekdays | WeekDays.Monday!=0) 说明是否包含该值
介绍
Flags关键字允许我们在使用.net 枚举变量时,使用多个组合值
使用演示
只需要在Enum上使用上[Flags]标签即可标记为可组合的枚举.下面是简单的用法:
static void TestEnumFlags()
{
/************ejk5 之 enum flags 语法*********************/
/*用'|'将各个枚举值分开即可*/
WeekDays wds = WeekDays.Monday | WeekDays.Sunday | WeekDays.Tuesday;
Console.WriteLine("我这3天要来大姨妈:"+wds);
/* 我们来看看计算过程:
* 或运算:
0000 0001 --星期一 0x1
或 0100 0000 --星期六 0x20
或 0000 0010 --星期二 0x2
= 0100 0011 = 67
*换句话说: 某个位是1就代表了这个位上的值在枚举中存在
*/
Console.WriteLine("这3天组合Int为: "+(int)wds);
/*利用上面规则来判断枚举值中是否包含某个枚举值就轻而易举*/
if ((wds & WeekDays.Monday) != 0)
Console.WriteLine("星期一是其中一天");
if ((wds & WeekDays.Saturday) == 0)
Console.WriteLine("星期六不是其中一天");
}
}
运行结果
源代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyLab
{
class EnumFlags
{
static void Main(string[] args)
{
TestEnumFlags();
}
static void TestEnumFlags()
{
/************enum flags 语法*********************/
/*用'|'将各个枚举值分开即可*/
WeekDays wds = WeekDays.Monday | WeekDays.Sunday | WeekDays.Tuesday;
Console.WriteLine("我这3天要来大姨妈:"+wds);
/* 我们来看看计算过程:
* 或运算:
0000 0001 --星期一 0x1
或 0100 0000 --星期六 0x20
或 0000 0010 --星期二 0x2
= 0100 0011 = 67
*换句话说: 某个位是1就代表了这个位上的值在枚举中存在
*/
Console.WriteLine("这3天组合Int为: "+(int)wds);
/*利用上面规则来判断枚举值中是否包含某个枚举值就轻而易举*/
if ((wds & WeekDays.Monday) != 0)
Console.WriteLine("星期一是其中一天");
if ((wds & WeekDays.Saturday) == 0)
Console.WriteLine("星期六不是其中一天");
}
}
[Flags]
enum WeekDays
{
//注意: 这里不要将Sunday设置为0x0,至于为什么留给大家思考
Monday = 0x1,
Tuesday = 0x2,
Wednesday = 0x4,
Thursday = 0x8,
Friday = 0x10,
Saturday = 0x20,
Sunday = 0x40
}
}
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4