`
lindexi-gd
  • 浏览: 139534 次
社区版块
存档分类
最新评论

C#枚举中使用Flags特性

 
阅读更多

如果对一个值可以包含多个,那么可以使用枚举,加上Flags

本文告诉大家如何写一个 Flags。

<!--more-->

在写前,需要知道一些基础知识,取反、或、与,如果不知道的话,请去看看基础。

当然,这些太复杂了,我也不会在这里解释。

假如有类型

    [Flags]
    public enum Show
    {
        A = 0x00000001,
        B = 0x00000010,
        C = 0x00000100,
        D = 0x00001000,
    }

合并多个值

合并多个,使用 |

  Show show=Show.A | Show.B

判断是否存在某个值

一个简单方法是用 HasFlag,但是一个方法是用 &

  Show show=Show.A | Show.B;
  show.HasFlag(Show.A);
  //其他
  bool 包含=(show & Show.A)!=0;

去掉一个值

  Show show=Show.A | Show.B;
  show=show & (~Show.A);

取反一个值

  Show show=Show.A | Show.B;
  bool 包含=(show & Show.A)!=0;
  if(包含)
  {
     show=show & (~Show.A);
  }
  else
  {
     show=show | Show.A;
  }

参见:http://www.cnblogs.com/jhxk/articles/1738831.html

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    lindexi#lindexi.github.io#C#枚举中使用Flags特性1

    假如有类型 Show 的定义如下合并多个值合并多个,使用 |枚举通过这个方法可以在一个变量包含多个值判断是否存在某个值一个简单方法是用 HasFlag,但是一个

    C#枚举中的位运算

    在C#枚举中,主要使用到的是与、或和非这三个运算符。 1. 与运算(&):两个二进制数按位进行与运算,如果对应位都是1,则结果位为1,否则为0。这在权限管理中用来检查某个权限是否被包含。 2. 或运算(|):两个...

    C# 枚举PC设备的源代码

    总的来说,"C# 枚举PC设备"涉及的关键知识点包括:C#枚举的使用,通过WMI查询硬件设备,以及在Windows Forms应用程序中展示这些信息。通过这些技术,开发者可以构建一个能够检测和管理PC上硬件设备的实用工具。

    C#特性与枚举值遍历

    通过理解并熟练运用C#中的枚举、反射和特性,开发者能够编写更加灵活且富有表达力的代码,提高代码的可读性和可维护性。同时,通过枚举的特性,我们可以为枚举成员添加更多的元数据,如描述,使得在开发过程中提供更...

    C#获取枚举Eumn的属性值,并绑定到控件

    总之,C#中的枚举和反射结合,能让我们在运行时动态地获取和使用枚举的属性,这对于增强程序的灵活性和用户体验非常有帮助。通过封装这些功能,我们可以轻松地在各种UI控件中展示枚举的描述信息,使代码更加人性化。

    给枚举值增加扩展数据

    在C#等编程语言中,枚举可以帮助我们编写更清晰、更具可读性的代码。然而,标准枚举仅支持基本数据类型(如int、byte等)的值,有时我们可能需要为每个枚举成员存储额外的信息,比如描述、关联的配置数据等。这时,...

    C#枚举中的位运算权限分配浅谈

    第一步, 先建立一个枚举表示所有的权限管理操作: 代码如下:[Flags] public enum Permissions { Insert = 1, Delete = 2, Update = 4, Query = 8 } [Flags]表示该枚举可以支持C#位运算, 而枚举的每一项值, 我们用2的n...

    C#作业-Falgs位标志的枚举类型的使用详解

    在C#编程语言中,`Flags`特性是一个用于枚举类型(`enum`)的关键特性,它允许我们定义一个枚举,其中的每个值可以表示一个独立的标志,也可以组合多个标志来表示更复杂的状态。这个特性使得枚举在表示多选项时非常...

    简述C#枚举高级战术

    为了提供额外的元数据信息,可以使用特性(Attribute)如`Description`或`Display`。例如: ```csharp [Flags] public enum Permissions { [Description("查看")] Read = 1, [Description("编辑")] Write = 2, ...

    枚举语句enum用法详解

    在C#中,枚举类型是基于整数类型的,通常使用`enum`关键字来声明。例如: ```csharp enum Colors { Red, Green, Blue } ``` 上述代码定义了一个名为`Colors`的枚举,它有三个成员:`Red`、`Green`和`Blue`。默认...

    Unity中实现多标签属性 枚举类型可以选择一个、多个、全选、全不选

    枚举类型的默认行为是在单选情况下使用,但要实现多选功能,我们可以使用`BitFlags`特性。这允许我们为每个枚举值分配一个位,然后用位运算来检查和修改选择的状态。为此,我们需要在枚举定义中添加`[Flags]`: ```...

    C#2.0新特性

    枚举类型现在可以与`Flags`特性一起使用,表示可以同时设置多个值的位标志。这使得枚举更适合表示一组可选的选项。 7. **泛型**: 泛型是C# 2.0的一个重大改进,它允许创建类型参数化的类、接口和方法。这提供了...

    枚举类型的使用

    本代码笔记主要探讨了C#中的枚举类型及其在实际编程中的应用,特别强调了枚举结构数组的使用。下面将详细阐述枚举的定义、特点以及如何创建和操作枚举结构数组。 首先,枚举是C#中预定义的数据类型,允许我们定义一...

    WPF之CheckBox组的全选设计

    **Flags特性** 是C#枚举中的一种特殊标记,它允许我们将一个枚举值看作是一组独立的位标志。当我们为枚举类型添加Flags特性时,编译器会生成一组方便的位运算方法,如HasFlag、IsDefined等,以便我们检查或修改这些...

    C#中枚举的特性 FlagAttribute详解

    总结来说,`FlagAttribute`是C#枚举的一个重要特性,它扩展了枚举的使用场景,使得我们可以利用位操作来组合和检查多个枚举值,从而提高代码的表达力和效率。正确理解和运用`FlagAttribute`,可以使代码更加简洁、...

    c#2.0新特性(修订)

    8. **枚举与Flags属性**:通过Flags属性,可以将枚举值表示为位标志,便于进行按位逻辑运算。 9. **委托改进**:C# 2.0的委托支持加法和减法操作符,允许动态地添加或移除事件处理程序。 10. **预处理器指令增强**...

    枚举学习源代码

    一些枚举支持序列化,可以将其转换为字符串或其他格式,便于在网络传输或存储中使用。 8. 枚举的扩展: 在某些语言中,如C#,枚举可以继承自其他枚举,形成层级关系,这在表示复杂系统中的分类时很有用。 9. ...

    理解C#中的枚举(简明易懂)

    要创建一个标志枚举,需要将`Flags`特性应用到枚举声明上,如`[Flags] enum DaysOfWeek`。这样,就可以使用位运算符来设置和检查多个枚举值,这对于处理多选项非常有用。 总之,枚举是C#中一种强大的工具,它提高了...

    详细了解C# 枚举与位枚举

    通过使用 `[Flags]` 特性,我们可以创建一个枚举,其值可以是二进制位的组合。例如: ```csharp [Flags] public enum Permissions { None = 0, Read = 1 , Write = 1 , Execute = 1 } ``` 这里的 `...

    C#系列--枚举类型与位标志学习心得

    ### C#中的枚举类型与位标志:学习心得与实践应用 #### 一、枚举类型的基本概念 在C#编程语言中,枚举(Enum)是一种数据类型,用于定义一组固定的命名常量集合。这些常量通常是整数值,但它们具有更明确的意义和...

Global site tag (gtag.js) - Google Analytics