C# 枚举简析

1,194 阅读2分钟

C# 枚举学习需要注意:

System.Enum 类型是所有枚举类型的抽象基类(它是一种与枚举类型的基础类型不同的独特类型),并且从 System.Enum 继承的成员在任何枚举类型中都可用。

存在从任何枚举类型到System.Enum 的装箱转换,并且存在从 System.Enum 到任何枚举类型的取消装箱转换。

System.Enum 本身不是枚举类型。相反,它是一个类类型,所有枚举类型都是从它派生的。类型 System.Enum 从类型 System.ValueType派生,而后者又从类型 object 派生。在运行时,类型 System.Enum 的值可以是 null 或是对任何枚举类型的装了箱的值的引用。

C# 枚举的优点:

枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。

枚举使代码更清晰,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。

枚举使代码更易于键入。在给枚举类型的实例赋值时,VS.NET IDE会通过IntelliSense弹出一个包含可接受值的列表框,减少了按键次数,并能够让我们回忆起可能的值

 

C# 枚举的常用方法:

Enum.Parse()方法

这个方法带3个参数,第一个参数是要使用的枚举类型。其语法是关键字typeof后跟放在括号中的枚举类名。第二个参数是要转换的字符串,第三个参数是一个bool,指定在进行转换时是否忽略大小写,最后,注意Enum.Parse()方法实际上返回一个对象引用—— 我们需要把这个字符串显式转换为需要的枚举类型(这是一个取消装箱操作的例子)

Enum.GetName()方法 获得枚举某一个值的对应名称

Enum.GetValues()方法 得到枚举的所有的值

Enum.GetNames(typeof(枚举名称))获取枚举所有的名称

foreach(string temp in Enum.GetNames(typeof(UIName)))

for (int i = 0; i < Enum.GetNames(typeof(UIName)).Length; i++)

//简例

using System;
public class ParseTest
{
    enum Colors
    {
        Red = 1,
        Green = 2,
        Blue = 4,
        Yellow = 8
    };

    public static void Main()
    {
       
        foreach (string colorName in Enum.GetNames(typeof(Colors)))
        {
            Console.WriteLine("{0}={1}", colorName,
            Convert.ToInt32(Enum.Parse(typeof(Colors), colorName)));
        }

            Console.WriteLine();

            Colors myOrange = (Colors)Enum.Parse(typeof(Colors), "Red, Yellow");

            Console.WriteLine("{1} {0}", myOrange, Convert.ToInt64(myOrange));

            Console.ReadLine();
    }
}