一周学会C#(枚举二)

一周学会C#(枚举二)

C#才鸟(QQ:249178521

4.使用枚举<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

枚举隐式派生于System.Enum

namespace System

{

    public abstract class Enum ...

    {  

        // 静态函数

        public static string[] GetNames(Type);

        ...

        // 实例函数

        public override string ToString();

        // 构造函数

        protected Enum();

    }

}

Suit trumps = Suit.Clubs;

string[] names = System.Enum.GetNames(trumps.GetType());

...

Console.Write(names[0]);          // Clubs

Console.Write(trumps);            // Clubs

Console.Write("{0}", trumps);     // Clubs

Console.Write(trumps.ToString()); // Clubs

Console.Write((Suit)24);          // 24

System.EnumSystem命名空间的一个抽象类。它实现了一系列的接口:

              public abstract class Enum

              : IComparable, IFormattable, IConvertible

       {

               ...

      

枚举(例如Suit)隐式派生于System.Enum

System.Enum是一个特殊的类,它只能被用作一个枚举类型的隐含基类。

你不能自己从System.Enum显式派生自己的类。

你不能创造一个System.Enum的实例。(它的构造函数是protected,并且它是一个抽象类)。

5.枚举的操作符

·       枚举变量当作整型变量看待,但在大部分情况下不能使用移位操作符。

6.枚举的转换

·       隐式转换

w       0 可以转为任一 enum类型

w       从不抛出错误

·       显式转换

w       enum enum 通过内在类型转换

w       enum 转为数值类型(包括char)

w       从数值类型(包括char) 转为 enum

w       从不抛出错误

0可以被转为任一enum类型,不管enum类型包不包括0

如果你使用Console.WriteLine显视一个枚举值,它好像被隐式转换为一个字符串。但这是一种错觉,下面的例子说明了这一点:

                     enum Suit { Clubs, Diamonds, Hearts, Spades }

           Suit trumps = Suit.Clubs;

           Console.WriteLinetrumps;//显视为Clubs

                     string s = trumps;//错误,trumps不是字符串

Console.WriteLine完成的从enumstring 的类型转换是通过System.EnumIFormattable接口实现的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章