• enum总结


    125
    10 20 50
    100
    flag

    125解决掉(123456789)

    元素的组合方式有两种:

    a b c (a,b,c)分隔符

    1 2 4 (7)枚举的组合

    我的另外一篇文章:

    枚举转换集合,flagAttribute的意义

    http://blog.csdn.net/cxzhq2002/archive/2010/05/10/5575980.aspx

    enum的组合用法,可解决用少量的枚举值解决大量的枚举值的作用。采用位域方式计算。

    C#在使用时有些小的技巧:

    位域通常用于由可组合出现的元素组成的列表,而枚举常数通常用于由互相排斥的元素组成的列表。因此,位域设计为通过按位“或”运算组合来生成未命名的值,而枚举常数则不是。语言在对位域的使用和对枚举常数的使用上不同。

    FlagsAttribute 的属性

    AttributeUsageAttribute 应用于此类,其 Inherited 属性指定 false。此属性只能应用于枚举。

    用于 FlagsAttribute 和 Enum 的准则

    • 只有要对数值执行按位运算(AND、OR、XOR)时才对枚举使用 FlagsAttribute 自定义属性。

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

    • 请考虑为常用标志组合创建一个枚举常量。例如,如果用于文件 I/O 操作的枚举包含枚举常量 Read = 1Write = 2,请考虑创建枚举常量 ReadWrite = Read OR Write,该常量组合了 ReadWrite 标志。此外,在某些情况下,可能会将用于组合标志的按位 OR 运算视为一种高级概念,在简单任务中不需要执行此操作。

    • 将负数定义为标志枚举常量时应谨慎,因为很多标志位置都可能设置为 1,这可能使您的代码产生混淆并易于发生代码错误。

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

    • None 用作值为零的标志枚举常量的名称。在按位 AND 运算中,不能使用 None 枚举常量测试标志,因为所得的结果始终为零。但是,您可以在数值与 None 枚举常量之间执行逻辑(不是按位)比较,以确定数值中是否已设置任何位。

      如果创建的是值枚举而不是标志枚举,创建 None 枚举常量仍十分有用。原因是在默认情况下,公共语言运行库会将用于枚举的内存初始化为零。因此,如果不定义值为零的常量,则枚举在创建时将包含非法值。

      如果明显存在应用程序需要表示的默认情况,请考虑使用值为零的枚举常量表示默认值。如果不存在默认情况,请考虑使用值为零的枚举常量(这意味着该情况不由任何其他枚举常量表示)。

    • 不要仅为了反映枚举自身的状态而定义枚举值。例如,不要定义仅用于标记枚举末尾的枚举常量。如果需要确定枚举的最后一个值,请显式检查该值。此外,如果枚举常量范围中的所有值都有效,还可以对第一个和最后一个枚举常量执行范围检查。

    • 不要指定保留供将来使用的枚举常量。

    • 在定义采用枚举常量作为值的方法或属性时,应考虑对该值进行验证。原因是即使没有在枚举中定义某个数值,也可以将该数值强制转换为枚举类型。

    ========================

    以下转,没细看

    枚举(Enum)使用总结

        在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,性别只有男跟女等等。如果把这些量说明为整型、字符型或其它类型显然是不妥当的。为此,C#提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。

    1、定义枚举

        定义枚举很简单,直接使用enum关键字声明即可,例如定义性别的枚举,性别只有男和女

  • 相关阅读:
    HTML 块级、内联、内联块级元素(转)
    CSS margin-top父元素下落
    JS 窗口resize避免触发多次
    ASP.NET 自制免费.NET代码生成器KevinCodeBuilder
    Plugin 中国省市选择插件
    Git 常用命令(转)
    JS Regex正则表达式的使用(转)
    Git 详细中文安装教程(转)
    业务逻辑中的测试总结(一)----比值类需求测试分解
    python学习笔记系列----(四)模块
  • 原文地址:https://www.cnblogs.com/jackljf/p/3589329.html
Copyright © 2020-2023  润新知