`

利用按位取反(~)从复合枚举值里清除枚举值

阅读更多

以 C# 中的 System.Drawing.FontStyle 为例。

 

如果需要同时有多种效果,

如:“粗体”和“下划线”的效果,可以用按位或(|)

FontStyle style = FontStyle.Bold | FontStyle.Underline;

 

如果需要去除 style 里的某一种效果,

如:去除“下划线”的效果,可以用按位取反(~)和按位与(&)

style = style & ~FontStyle.Underline;

 

 

原理:

 

public enum FontStyle
{
    Regular = 0,
    Bold = 1,
    Italic = 2,
    Underline = 4,
    Strikeout = 8,
}

 

 

  1. FontStyle.Underline 的值用二进制表示为:100
  2. 按位取反后为:011
  3. 原枚举值与 011 按位与操作后,二进制表示的倒数第三位是 0,后两位还是原值。这样就把 FontStyle.Underline 这种效果从原枚举值中清除了。
分享到:
评论

相关推荐

    java枚举结果类、根据状态值获取枚举值

    java枚举结果类、根据状态值获取枚举值 Controller: /** 模块类型枚举 */ model.addAttribute("mType", ModuleTypeEnum.ModuleTypeShow()); ftl: value="${mType.key}:${mType.value}” </#list>

    给枚举值增加扩展数据

    标题"给枚举值增加扩展数据"指向的就是如何利用特性(Attribute)在枚举成员上附加自定义信息。以下将详细介绍这一主题: 1. **枚举的基本概念** 枚举是一种结构化的常量集合,可以指定其底层类型(默认为int)。...

    Swift视频教程:switch语句匹配枚举值

    在本视频教程中,我们将深入探讨如何利用`switch`语句来匹配枚举值,这是Swift中枚举类型(`enum`)的一个重要应用场景。 枚举类型在Swift中是一个强大的数据结构,它允许我们定义一组相关的值并为之指定共同的行为...

    C#特性与枚举值遍历

    - 枚举转换:枚举值可以通过`ToString()`方法转化为字符串,反之,字符串也可以通过`Enum.Parse()`或`Enum.TryParse()`方法转化为枚举值。 2. 反射(Reflection): - 反射是.NET框架提供的一种机制,它允许在...

    Pb—KeyCode枚举值与键盘对照表

    ### Pb—KeyCode枚举值与键盘对照表 在软件开发过程中,尤其是涉及到用户输入处理时,理解键盘按键与程序中的键码(KeyCode)之间的映射关系至关重要。本文将基于提供的“Pb—KeyCode枚举值与键盘对照表”,详细...

    springboot validator枚举值校验功能实现

    Spring Boot Validator 枚举值校验功能实现 在 Spring Boot 项目中,校验参数功能是一个非常重要的组件,可以帮助我们确保用户输入的数据是否合法。如果我们想校验枚举值,那么 Spring Boot Validator 就是一个不错...

    C# 从枚举值获取对应的文本描述详解

    C# 从枚举值获取对应的文本描述详解 有时枚举值在显示时,需要显示枚举值对应的文本串。一种方案是在调用的地方使用switch或者if来判断枚举值,然后赋给不同的文本串,但这样一来,如果有较多的地方都用到的时候就会...

    在wpf中把枚举显示在combobox中

    在Windows Presentation Foundation (WPF) 中,开发人员经常需要在用户界面中展示枚举值,以便用户能够选择。ComboBox控件通常被用作这样的选择器,因为它提供了下拉列表的功能,用户可以从中选取一个选项。本项目...

    第十章 枚举、位运算.docx

    例如,如果你想保留一个整数的低8位,你可以使用按位与操作与一个全1的8位数(即255,二进制为0000000011111111)进行操作,这样会清除高8位的值: ```c int a = 95; // 00001001 int b = a & 255; // 00001001 & ...

    用枚举值管理项目字典的实战应用(适配器模式)(代码示例)

    用枚举值管理项目字典的实战应用(适配器模式)(代码示例) 枚举值相比常量的优势 应用场景 模拟代码实现 3.1 UML类图(适配器模式) 3.2 项目Maven依赖 3.3 示例代码实现 4.4 测试 1.枚举值相比常量的优势 1.1 ...

    struts2枚举值、日期值转换示例

    在这个“struts2枚举值、日期值转换示例”中,我们将关注如何自定义枚举值和日期值的转换器。 首先,枚举(Enum)在Java中是一种特殊的类,用于表示有限集合中的固定数量的值。在Struts2中,如果Action类的属性是...

    使用ConsoleColor枚举

    在C#编程中,`ConsoleColor`枚举是.NET框架提供的一种用于控制控制台文本颜色的类型。这个枚举包含了16种预定义的颜色,使得我们可以在控制台上以不同的颜色输出文本,从而使输出的信息更加清晰、易读。下面将详细...

    java位运算大全.doc

    位运算符可以结合这些整型变量进行各种位级操作,例如通过按位与(&)来设置或清除特定位,按位或(|)来设置位,按位异或(^)来进行位级别的XOR操作,按位右移(>>>或>>)来移动位,左移()将位向左移动,以及按位取反(~)来...

    支付宝文档,支付宝接口文档,枚举值

    枚举值在接口文档中起到关键作用,它们定义了特定状态或选项,例如支付状态、交易类型、退款结果等。了解并正确使用枚举值是确保接口调用成功的关键。例如: - **支付状态枚举**:未支付(UNPAY)、支付中(PAYING...

    windows 运行gclient下载webrtc所需的Windows .NET Framework 4.组件

    col”时发生异常:“由于枚举值无效,无法将空值转换为类型“System.Net.SecurityProt ocolType”。请指定以下枚举值之一,然后重试。可能的枚举值为“Ssl3、Tls”。” Retrying after a short nap... Failed to ...

    c#编写两个枚举CardColor和CardRank,分别表示扑克牌花色和级别。随机生成1张扑克牌,输出对应的各枚举值。

    我们可以利用这个类来随机选择一个枚举值。首先创建一个`Random`实例,然后通过它的`Next`方法结合枚举成员的数量来获取一个随机索引,最后将这个索引转换为对应的枚举值。例如: ```csharp Random rand = new ...

    C# 获取枚举值的简单实例

    在C#编程语言中,枚举(Enumeration)是一种强大的工具,用于定义一组命名的常量。这些常量在程序中代表特定的值,通常用于简化和...枚举是C#中一种强大且灵活的类型,合理地利用它可以使我们的程序更加规范和高效。

    C语言初学者入门讲座 第十四讲 枚举与位运算(1)

    C语言提供了六种基本的位运算符:按位与(`&`)、按位或(`|`)、按位异或(`^`)、取反(`~`)、左移(`)、右移(`>>`)。 - 按位与运算符`&`:对两个操作数的二进制位进行逻辑与运算。只有两个位都是1,结果位才...

    java枚举类的属性、方法和构造方法应用实战

    枚举类的应用非常广泛,例如,在性别枚举类中,我们可以定义多个枚举值,每个枚举值都可以代表不同的性别。然后,我们可以使用 switch 语句来判断枚举值的类型,并执行不同的操作。 例如,在 GenderTest 类中,我们...

Global site tag (gtag.js) - Google Analytics