一周学会C#(枚举二)

王朝c#·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

一周学会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接口实现的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航