一周学会C#(枚举二)

一周学会 C# (枚举二)

C# 才鸟( QQ:249178521 )

4. 使用枚举

** 枚举隐式派生于 ** ** 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.Enum 是 System 命名空间的一个抽象类。它实现了一系列的接口:

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.WriteLine ( trumps ) ; // 显视为 Clubs

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

Console.WriteLine 完成的从 enum 到 string 的类型转换是通过 System.Enum 的 IFormattable 接口实现的。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus