枚举位域标识符[Flags]

C#枚举绑定ComboBox:告别硬编码,实现类型安全与优雅取值 在C#桌面应用开发中,数据绑定是一种将数据源与UI控件关联的声明式编程技术,其核心原理是通过建立数据与视图的映射关系,实现两者的自动同步。这项技术的核心价值在于解耦数据逻辑与界面逻辑,提升代码的可维护性和类型安全性。在WinForms和WPF开发中,将枚举类型绑定到ComboBox控件是一个典型应用场景,它能有效解决传统硬编码填充方式带来的字符串魔法值、维护困难等问题。通过构建泛型数据模型、利用Description特性提供友好显示名,开发者可以轻松实现枚举值与下拉选项的优雅绑定,并在业务逻辑中直接使用强类 阅读详情

之前对于枚举的应用很浅,Flag标识符遇到过,但并没有自己写过。

这次需要做一个信息分级的工作,于是简单参考了一下MSDN帮助文档,整理一下自己觉得有用的提示。


枚举代码如下:

[Flags]
public enum InfoType
{
    //用 2 的幂(即 1、2、4、8 等)定义枚举常量。这意味着组合的枚举常量中的各个标志都不重叠 —— MSDN

    /// <summary>
    /// 错误。
    /// </summary>
    Error = 0x01,
    /// <summary>
    /// 信息。
    /// </summary>
    Information = 0x02,
    /// <summary>
    /// 成功。
    /// </summary>
    Success = 0x04,
    /// <summary>
    /// 失败
    /// </summary>
    Failed = 0x08,
    /// <summary>
    /// 警告
    /// </summary>
    Warning = 0x10,
    /// <summary>
    /// 完成
    /// </summary>
    Completed = 0x20,

    /// <summary>
    /// 异常类型。
    /// </summary>
    Exception = 0x40,
    /// <summary>
    /// 非异常类型,包含所有的非Exception类型的消息
    /// </summary>
    NotException = Error | Information | Success | Failed | Warning | Completed
}

FlagsAttribute 和枚举准则

使用 2 的幂作为枚举的标志

用 2 的幂(即 1、2、4、8 等)定义枚举常量。 这意味着组合的枚举常量中的各个标志都不重叠。例如以下代码

InfoType infoType = 0;
if(...)
{
    infoType |= InfoType.Error;
}
if(...)
{
    infoType |= InfoType.Exception;
}

 这样在调试过程中,你能直观地看到infoType这一枚举变量中含有哪些枚举值了。否则数值是乱的,对应的枚举值也是乱的。

多种类型枚举值

请考虑为常用标志组合创建一个枚举常量。 例如,上面的代码中,NotException类型包含了多种类型枚举值,所以用OR运算符连接起来。

谨慎使用负数

将负数定义为标志枚举常量时应谨慎,这可能使代码产生混淆并易于发生代码错误。

测试枚举变量

测试数值中是否已设置标志的一种简便方法为:在数值和标志枚举常量之间执行按位"与"操作,这种方法会将数值中与标志不对应的所有位都设置为零,然后测试该操作的结果是否等于该标志枚举常量。如下:

InfoType infoType = InfoType.Error|InfoType.Warning|InfoType.Failed;

if((infoType & InfoType.Error) == InfoType.Error)
{
    Console.WriteLine("含有Error枚举值");
}
else
{
    Console.WriteLine("不含有Error枚举值");  
}

if((infoType & InfoType.Exception) == InfoType.Exception)
{
    Console.WriteLine("含有Exception枚举值");
}
else
{
    Console.WriteLine("不含有Exception枚举值");  
}

/*
    含有Error枚举值
    不含有Exception枚举值
*/

 

C语言枚举(enum)完全指南:从基础语法到底层原理与实战应用 在C语言编程中,数据类型是构建程序逻辑的基础单元,而用户自定义类型则是提升代码抽象能力的关键。枚举(enum)作为一种特殊的用户自定义类型,其核心原理是将一组相关的整型常量组织成具有语义的命名集合,从而替代传统的宏定义(#define)或字面常量。这种设计不仅增强了代码的可读性和自文档性,还能让编译器进行更严格的类型检查,提升代码的健壮性。在工程实践中,枚举广泛应用于状态机建模、配置选项管理、错误码定义等场景,例如在**订单系统**中清晰定义“待支付、已发货”等状态,或使用**位标志(bit flags)* 阅读详情

相关推荐

1.毫米波雷达心率、呼吸原理实现(一)实例

毫米波雷达心率、呼吸检测原理本项目分两到三篇文章写完,第一阶段借鉴TI开源项目以及根据自己的见解适当更改信号处理链通过AWR1843汽车雷达传感器和DCA1000采集卡采集数据完成人体呼吸和心跳检测算法的实现。第二阶段将仿真成功的代码搬移TIAWR1843传感器并通过串口数据实现生命体征的实时处理。本文即为第一阶段实现过程。本文首先概述毫米波雷达呼吸心跳检测的原理,紧接着概述本项目信号处理流程,另外本项目第一阶段通过matlab仿真验证算法的有效性,仿真源码可关注小编并私信可取。1.概述。

Poulen的博客 2万+

C# [Flags]属性

,它意味着这个枚举设计用来支持位运算,以便可以组合多个枚举值。这通常用于表示可以独立打开或关闭的多个选项或标志。在这个例子中,每个枚举值都是2的幂(1, 2, 4, 8等),这样它们就可以通过位运算(如按位或。如果包含,它会输出"The text is bold."。属性非常有用,特别是当你想表示可以组合在一起的多个选项时。然后,你可以使用按位与。这个属性被用于枚举(

arslan-robot 1054

测试用例经典练习之微信发红包测试用例

微信发红包测试用例

ZCYaiCLX3344的博客 1万+

C# 特性(Attribute)之Flag特性

本文参考自C# 位域[flags],纯属读书笔记,加深记忆 [Flags]的微软解释是“指示可以将枚举作为位域(即一组标志)处理。”其实就是在编写枚举类型时,上面附上Flags特性后,用该枚举变量是既可以象整数一样进行按位的“|”或者按位的“&amp;”操作了。另外一个是在引用COM组件时使用,我没有用过,你可以查看MSDN 这种用处很大,比如权限、执行状态等,都可以用一个int型保存到数据库中,...

weixin_34195142的博客 434

Seedance 2.5、HappyHorse 1.1与豆包Seed 2.1:一周内三大模型技术参数分析

音频生成延续原生音画同步架构,将文本、画面、音频统一序列建模,生成过程同步产出匹配口型的原声音频,支持中、英、日、韩、德、法、阿拉伯7种语言唇形对齐,无需二次调音。从行业趋势看,30秒直出、4K分辨率、7语种唇形同步正在成为视频生成的标配,编程Agent化和多模态理解正在成为语言模型的标配。技术狂奔的同时,监管在同步收紧。我理解这里的关键在于,视频生成模型的商业化落地不仅取决于生成质量,更取决于推理效率——生成一段15秒1080P视频需要多少秒、消耗多少算力,直接决定了模型的商用可行性。

lichunchuan1的博客 329

数据清洗(Data Cleansing)

数据清洗(Data Cleansing)是指对数据进行处理和纠错,以去除或修复数据集中存在的错误、不致、不完整和冗余的数据,从而使数据更加准确、可靠和有用。数据清洗是数据处理和数据分析中一个非常重要的步骤,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。数据清洗是一个重要的过程,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。在实际应用中,我们可以使用一些工具和技术来实现数据清洗,例如 Pandas、NumPy 和 OpenRefine 等。通过数据清洗,

meimei169500的博客 1万+

C/C++编程语言中枚举类型(enum)介绍

枚举类型(enumerations)是C/C++编程语言的一种派生数据类型,它是由用户定义的若干枚举常量组成的集合。如果一个变量只有几种可能的值,那么可以将其定义为枚举类型。所谓“枚举”,是指将变量的值一一列举出来,变量只能在列举出来的枚举值范围内进行取值。

liitdar的博客 5862

手把手教你学simulink实例--基于Simulink的船舶动力定位系统建模与仿真

船舶动力定位系统(Dynamic Positioning System, DPS)是一种通过控制推进器来保持船舶在指定位置和航向的技术。它广泛应用于海上钻井平台、海洋调查船、起重船等需要精确位置控制的场景。DPS的核心任务是实时感知环境干扰(如风、浪、流),并通过闭环控制算法调整推进器输出,以抵消外界扰动并维持船舶的位置和姿态。本项目旨在基于MATLAB/Simulink平台,构建船舶动力定位系统的数学模型,并进行仿真分析,验证其性能和稳定性。

MHD0815的博客 1085

c 语言中枚举类型的标识符,C语言枚举值和标识符

示例/*declareitemsoftheenum*/#defineFOREACH\X(item1)\X(item2)\X(item3)\/*endoflist*//*definetheenumvalues*/#defineX(id)MyEnum_##id,enumMyEnum{FOREACH};#undefX/*convertane...

weixin_39809168的博客 547

Agent驱动电商运营:从选品到售后的全链路革新

在当今竞争激烈的电商市场中,传统的电商运营模式面临着诸多挑战。从选品到售后,每个环节都需要大量的人力投入和专业知识。选品需要深入了解市场趋势和消费者需求,营销需要精准定位目标用户,客服需要24小时响应用户咨询。这些工作不仅耗时耗力,而且容易受到人为因素的影响,导致效率低下和成本高企。AI Agent是一种能够感知环境、做出决策并采取行动的智能系统。感知能力:能够获取和处理环境信息。决策能力:能够根据感知到的信息做出决策。行动能力:能够执行决策,对环境产生影响。学习能力。

AI 领航者的博客 356

【ComfyUI】Wan2.2 Animate 背景保留动作迁移视频生成

本文介绍了一个基于ComfyUI的高精度视频生成工作流"Wan2.2 Animate",该系统融合动作捕捉、图像拼接和LoRA加权等技术,能自动识别人脸并完成精准动作迁移,同时保持背景稳定。工作流采用模块化设计,包含输入提取、图像融合、模型加载等关键节点,核心模型Wan2.2-Animate-14B支持fp8精度与BlockSwap控制。流程分为图像输入、动作提取、多图合成等五个阶段,通过文本提示编码器和图像语义编码器实现语义驱动的动作生成,最终输出高质量视频,适用于虚拟形象驱动和

Mr数据杨 2280

C语言之enum的用法和注意事项(枚举类型)

在学校学C语言的时候,很多人都没有经常用,以至于对enum不是很了解,后来工作的时候,我发现这个经常用到,于是就上网查了下详解。 1.enum的用法 枚举类型定义用关键字enum标识,形式为:  enum 标识符  {       枚举数据表 }; 注意: (1)、enum是关键字,标识枚举类型。定义枚举类型必须用enum开头。 (2)、枚举数据表中的名字是程序员自己设定,这些名

wo_yan_zhao的专栏 3万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# 枚举与位枚举

一、枚举的概念: C# 枚举(Enum), 枚举类型是用于声明一组命名的常数的基本数据类型(值类型); 二、枚举的定义: 声明 enum 变量:  enum <enum_name> {enumeration list}; 其中 enum_name 指定枚举的类型名称,enumeration list 是一个用逗号分隔的标识符列表; 枚举列表中的每个符号代表一个整数值,一个比他前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0。例如:   enum Days {Sun

huang714的专栏 349

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

集合在枚举数实例化后进行了修改_(编程知识)C# 枚举与位枚举

一、枚举的概念:C# 枚举(Enum), 枚举类型是用于声明一组命名的常数的基本数据类型(值类型);二、枚举的定义:声明 enum 变量: enum {enumeration list};其中 enum_name 指定枚举的类型名称,enumeration list 是一个用逗号分隔的标识符列表;枚举列表中的每个符号代表一个整数值,一个比他前面的符号大的整数值。默认情况下,第一个枚举符号的值是 ...

weixin_31452537的博客 1980

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

枚举

1.C# 枚举(Enum):   枚举类型 是 用于声明一组命名的常数 的 基本数据类型(值类型)。2.枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 03.所有枚举类型都隐式地继承System.Enum类型,System.Enum类型是继承自System.ValueType类型唯一不为值类型的引用类型。4.C# 标记枚举(Flag...

weixin_30409849的博客 80

QT之QFlags详解

QFlags是一个模板类,其中Enum是枚举类型,QFlags用于定义枚举值的或运算组合,在Qt中经常用到 QFlags 类。alignment属性值是Qt:Alignment类型Qt帮助文档中显示的Qt::Alignment信息有如下表示enum Qt::AlignmentFlag //枚举类型flags Qt::Alignment //标志类型第一行代码翻译一下就是Qt命名空间下的有一个变量名字叫做AlignmentFlag他是枚举类型。

weixin_73303171的博客 1843

CMake中set(CMAKE_CXX_FLAGS_DEBUG “-g -O0 -DDEBUG“)引发问题

在使用 CMake 构建项目时,如果在文件中定义了DEBUG宏,并且代码中存在同名的枚举值或变量,会导致编译错误。这种冲突通常表现为编译器无法正确解析代码中的DEBUG标识符。通过以下方法可以避免DEBUG取消定义DEBUG宏:在包含冲突的头文件之前取消定义DEBUG宏。重命名枚举值:将代码中的枚举值DEBUG重命名为其他名称。避免定义DEBUG宏:在 CMake 中不定义DEBUG宏,使用其他标志来启用调试功能。

wangwl1998的博客 607

C#中的枚举(Enum)你知道多少呢?

默认情况下,枚举第一个值是0, 可显式为枚举赋值。 可以定义枚举的基础类型,如enum E : short {}, sizeof(E) == 2;默认情况下是int。 枚举的继承链:ValueType-&gt;Enum-&gt;enum 枚举类型和基础类型之间的转换都是显式的,0除外,因为存在从0代任何枚举类型的隐式转换。 枚举的ToString()会输出其枚举值的标识符、 从字符串转枚举:AE...

weixin_34381687的博客 239

枚举、标记和C#

原文地址:http://www.codeproject.com/Articles/37921/Enums-Flags-and-Csharp-Oh-my-bad-pun.aspx 我不知道其他人怎么样,但是我就是喜欢枚举类型。而且,我也喜欢和枚举结合在一起的Flags Attribute(不知道翻成什么好)。本文将探讨配合着扩展方法如何使用二者来使你的代码更紧凑、易懂。 如果你从来没有将二者...

weixin_30871905的博客 88

深入解析iota:从枚举常量到配置管理的编程利器

在编程中,常量定义是基础但关键的环节,尤其在处理状态码、错误码和配置标志位时。传统手动赋值方式存在易错、难维护和意图不清晰三大痛点,而自动递增常量生成模式通过将数值分配交给编译器或运行时,让开发者专注于业务语义和逻辑顺序。这种模式遵循“约定优于配置”的设计哲学,其技术价值在于提升代码的清晰度、安全性和可维护性。应用场景广泛,从定义简单的枚举与状态集合,到生成位掩码与权限标志,再到实现紧凑的配置选项,都能显著优化代码结构。本文以Go语言中的`iota`为核心,深入探讨其作为编译时常量生成器的机制,并通过实战案

weixin_30254435的博客 318

enum(C# 参考)

        enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。但是,还可以将枚举嵌套在类或结构中。.Net C#中枚举的声明格式如下所示:                [attributes] [modifiers] enum identifier [:

飞鹰技术 4052

C++枚举完全指南:从魔法数字到enum class工程实践

在编程中,常量是表示固定值的标识符,用于提高代码可读性和维护性。传统上,开发者常使用“魔法数字”直接嵌入代码,但这会导致可读性差、维护困难。枚举作为一种用户自定义数据类型,通过为整数值赋予有意义的名称,解决了这一问题。其技术价值在于增强代码自解释性、减少错误,并提升团队协作效率。在C++中,枚举经历了从传统enum到C++11引入的强类型enum class的演进,后者通过作用域隔离和禁止隐式转换,提供了更强的类型安全性。应用场景广泛,包括状态管理、配置选项、错误码定义等。本文聚焦于C++枚举的深度解析,涵

weixin_34062469的博客 367

C语言枚举(enum)完全指南:从基础语法到高级应用实战

在C语言编程中,常量管理是提升代码可读性和维护性的基础环节。枚举(enum)作为一种用户自定义数据类型,其核心原理是为一系列整型常量赋予有意义的名称,编译器默认从0开始分配整数值。这项技术的核心价值在于将代码中的“魔数”(Magic Number)替换为自解释的标识符,从而增强代码可读性、限制变量取值范围并便于调试。在实际工程实践中,枚举常与switch-case语句结合实现状态机,或通过位运算定义标志位(Flags),广泛应用于错误码系统、配置选项和有限状态机等场景。本文深入解析C语言枚举的定义、语法、常

weixin_34326558的博客 293
下一篇: 浏览器的Cookie策略
5mack
博客等级 码龄10年 218粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值