zoukankan      html  css  js  c++  java
  • 关于枚举的用法和类型转换

    转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)

  • 相关阅读:
    LInux SSH远程文件/目录传输命令scp(转载)
    Linux系统时间设置(转载)
    Linux重置mysql密码(转载)
    快速输入(简单版)
    bitset
    或 、与、异或
    bitset
    Java面向对象3(K~O)
    Java面向对象2(G~J)
    数据结构实验之栈与队列六:下一较大值(二)(SDUT 3333)
  • 原文地址:https://www.cnblogs.com/taidi/p/4702161.html
Copyright © 2011-2022 走看看