• 关于枚举的用法和类型转换


    转http://www.cnblogs.com/rene1018/archive/2009/03/17/1414658.html

    一、              定义

    1、每个枚举成员均具有相关联的常数值。此值的类型就是包含了它的那个枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。示例

    enum Color: uint

    { Red = -1, Green = -2, Blue = -3 }

    产生编译时错误,原因是常数值 -1、-2 和 –3 不在基础整型 uint 的范围内。

    2、枚举默认类型是int,从0开始

    3、多个枚举成员可以共享同一个关联值。示例

    enum Color

    { Red, Green, Blue, Max = Blue }

    显示一个枚举,其中的两个枚举成员(Blue 和 Max)具有相同的关联值。

    4、一个枚举成员的关联值或隐式地、或显式地被赋值。如果枚举成员的声明中具有“常数表达式”初始值设定项,则该常数表达式的值(它隐式转换为枚举的基础类型)就是该枚举成员的关联值。如果枚举成员的声明不具有初始值设定项,则它的关联值按下面规则隐式地设置:

    5、如果枚举成员是在枚举类型中声明的第一个枚举成员,则它的关联值为零。 否则,枚举成员的关联值是通过将前一个枚举成员(按照文本顺序)的关联值加 1 得到的。这样增加后的值必须在该基础类型可表示的值的范围内;否则,会出现编译时错误。

    示例

    using System;

    enum Color

    { Red, Green = 10, Blue }

    则:Red = 0  Green = 10  Blue = 11

    原因如下:

    枚举成员 Red 被自动赋予零值(因为它不具有初始值设定项并且是第一个枚举成员)。

    枚举成员 Green 被显式赋予值 10。

    枚举成员 Blue 被自动赋予比文本上位于它前面的成员大 1 的值。

    6、枚举成员的关联值不能直接或间接地使用它自己的关联枚举成员的值。除了这个循环性限制外,枚举成员初始值设定项可以自由地引用其他的枚举成员初始值设定项,而不必考虑它们所在的文本位置的排列顺序。在枚举成员初始值设定项内,其他枚举成员的值始终被视为属于所对应的基础类型,因此在引用其他枚举成员时,没有必要使用强制转换。

    示例

    enum Circular

    { A = B, B }

    产生编译时错误,因为 A 和 B 的声明是循环的。A 显式依赖于 B,而 B 隐式依赖于 A。

    7、枚举成员的命名方式和作用范围与类中的字段完全类似。枚举成员的范围是包含了它的枚举类型的体。在该范围内,枚举成员可以用它们的简单名称引用。在所有其他代码中,枚举成员的名称必须用它的枚举类型的名称限定。枚举成员不具有任何声明可访问性,如果一个枚举类型是可访问的,则它所含的所有枚举成员都是可访问的。

      

    二、             转换

    1、 枚举转常数

    (int)Color.Red = 0

    (int)Color.Green = 10

    2、 常数转枚举

    Color mycolor = (Color)0

    3、 根据常数取枚举名

    综合2和4

    或者

    Enum.GetName(typeof(Color),0)) = ”Red”

    Enum.GetName(typeof(Color),10)) = ”Green”

    4、 枚举转字符串

    Color.Red.ToString() = ”Red”

    5、 字符串转枚举

    String str = “Red”

    Color mycolor = (Color)Enum.Parse(typeof(Color),str,false)

  • 相关阅读:
    MySql模糊查询like通配符使用详细介绍
    使用powershell批量添加Qt的文件(生成pro)
    宏定义的教训
    使用powershell批量添加Keil和IAR的头文件路径
    python和数据科学(Anaconda)
    CDCE913产生任意频率
    QT中检索设定目录下所有指定文件的方法
    QT中将ASCII转换为对应数值的方法
    STM8如何使用自带的bootloader
    QT中使用函数指针
  • 原文地址:https://www.cnblogs.com/taidi/p/4702161.html
Copyright © 2020-2023  润新知