首页 > 编程语言 >C# 枚举使用[Flags] 特性形成一个位掩码及判断是否存在某个枚举组合

C# 枚举使用[Flags] 特性形成一个位掩码及判断是否存在某个枚举组合

时间:2023-09-27 10:11:06浏览次数:32  
标签:C# value MyEnum 枚举 Flags 掩码 Option2 Option1

在C#中,通过给枚举类型添加 [Flags] 特性,可以指示该枚举类型是用于表示位标志的枚举。

使用带有 [Flags] 特性的枚举类型允许将多个枚举值组合在一起,形成一个位掩码,提供了一种更方便和可读性更好的方式来表示多个选项的组合。

当给枚举类型添加 [Flags] 特性后,可以使用按位或 | 运算符来组合多个枚举值,使用按位与 & 运算符来判断是否包含某个特定的枚举值。

以下是一个示例:

[Flags]
enum MyEnum
{
    None = 0,
    Option1 = 1,
    Option2 = 2,
    Option3 = 4,
    Option4 = 8
}

static void Main()
{
    MyEnum value = MyEnum.Option1 | MyEnum.Option3;

    if ((value & (MyEnum.Option1 | MyEnum.Option2)) == (MyEnum.Option1 | MyEnum.Option2))
    {
        Console.WriteLine("value 同时包含 Option1 和 Option2");
    }
    else if ((value & (MyEnum.Option1 | MyEnum.Option2)) != (MyEnum.Option1 | MyEnum.Option2))
   { 
    Console.WriteLine("value 不同时包含 Option1 和 Option2");
  }
}

 

标签:C#,value,MyEnum,枚举,Flags,掩码,Option2,Option1
From: https://www.cnblogs.com/log9527blog/p/17732017.html

相关文章

  • macOS Sonoma 14 (23A344) 正式版发布,ISO、IPSW、PKG 下载
    macOSSonoma今日推出,全面提升生产力和创意工作流macOSSonoma14(23A344)正式版发布,ISO、IPSW、PKG下载2023年9月26日(北京时间27日凌晨)macOSSonoma正式版现已发布。本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,......
  • macOS Sonoma 14 (23A344) 正式版 Boot ISO 原版可引导镜像下载
    macOSSonoma14(23A344)正式版BootISO原版可引导镜像下载2023年9月26日(北京时间27日凌晨)macOSSonoma正式版现已发布。本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows......
  • 进入BIOS推荐方法ThinkPad , ThinkCentre , ThinkStation
    描述用户可以轻松地调整计算机时间,日期,查看硬件配置信息(机器类型,序列号,内存和HDD等),设置无线或热键功能以及在BIOS下调整开机启动过程。推荐的进入BIOS方法如下所示。通过功能键(Fn)进入BIOS从Windows10进入BIOS从Windows8.1/8进入BIOS观看我们的视频:[视频]什么是BIOS?[视频]如......
  • 视频监控/监控汇聚平台EasyCVR助力档案库房可视化管理的应用方案
    档案作为一种特殊的留存记录,具有珍贵的历史价值和文化遗产意义。它是人类活动真实的见证,记录了辉煌时刻和普通人的生活轨迹,对社会发展和经济建设起着举足轻重的作用。如今随着市场经济的不断发展和人类文明的飞速推进,档案的价值更加凸显,档案的储存和管理也备受关注。提升档案数字......
  • UCLASS是一种类说明符吗?
    我们知道,在java里有一个东西叫注解。注解的使用在spring框架里更是被用的出神入化。那么C++里呢?有没有对类进行说明的类型 第一种类说明符:Abstract。抽象类说明符将类声明为“抽象基类”,防止用户在虚幻编辑器中向世界添加此类的参与者,或在游戏中创建此类的实例。 第二种......
  • vscode编写markdown
    1.需求分析2.环境搭建1.需求分析最近在网上折腾了好久Markdown的写作环境,作为一个普通用户,总结一下个人对于Markdown写作环境的几点需求。由于本人刚接触Markdown不久,因此,需求也比较简单,想看具体搭建步骤的可以直接跳到第二章环境搭建:本地存储。这一点主要是出于隐私要......
  • 视频融合平台EasyCVR接入华为ivs3800平台提示400报错的原因及解决方法
    青犀视频平台的开源EasyDarwin视频监控解决方案EasyCVR在复杂网络环境中表现出色。它能够将分散的各类视频资源集中管理,实现统一汇聚和整合。EasyCVR支持多种画面窗口播放模式,包括1、4、9、16个画面窗口,同时可以播放多路视频流,并且支持视频定时轮播功能。此外,EasyCVR还兼容多种播......
  • How to get the original size of an image using JavaScript All In One
    HowtogettheoriginalsizeofanimageusingJavaScriptAllInOne如何使用JavaScript获取一个图片像的原始大小naturalWidth&naturalHeightletoutput=document.querySelector(".output");letimage=document.querySelector("img");window.add......
  • C: Huffman Coding
     HuffmanCoding.h/*********************************************************************************@fileHuffmanCoding.h*@briefHuffmanCodinghttps://www.programiz.com/dsa/huffman-coding#google_vignette*IDEVSCODEhttps://w......
  • 国标GB28181视频平台EasyCVR调用rtsp地址返回的IP不正确是什么原因?
    EasyCVR是一款安防监控、云存储和磁盘阵列存储的视频汇聚平台,具有强大的可拓展性、灵活的视频能力和轻快的部署特点。它支持主流标准协议,如GB28181、RTSP/Onvif、RTMP等,还能够接入厂家私有协议和SDK,包括海康Ehome、海大宇等设备的SDK。EasyCVR能够将视频流以RTSP、RTMP、FLV、HLS......