专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

C#的Enum中Flags的用法(枚举赋多值和如何进行判断)

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:18:55       共计:3617 浏览

Flags关键字允许我们在使用.net枚举变量时,使用多个组合值,多个值的赋值方法是使用关键字“|”,

即WeekDays weekdays=WeekDays.Monday  |  WeekDays.Tuesday;

判断枚举是否具有该值:if( weekdays | WeekDays.Monday!=0)   说明是否包含该值

介绍

Flags关键字允许我们在使用.net 枚举变量时,使用多个组合值 

使用演示 

 [Flags]
    enum WeekDays
    {
        //注意: 这里不要将Sunday设置为0x0,至于为什么留给大家思考
        Monday = 0x1,
        Tuesday = 0x2,
        Wednesday = 0x4,
        Thursday = 0x8,
        Friday = 0x10,
        Saturday = 0x20,
        Sunday = 0x40
    }


      只需要在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
    }



}


版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:C# 位域[flags] | ·下一条:jQuery.post 实例

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有