c#枚举(Enum)

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");//一个枚举myOrange=名称、多个枚举myOrange=多个枚举数字值相加

        Console.WriteLine("没有Int转换:{0}\n经过Int转换:{1}", myOrange, Convert.ToInt64(myOrange));

        Console.ReadLine();
    }
}

 

posted @ 2018-09-05 10:45  wys`  阅读(280)  评论(0编辑  收藏  举报