那么被赋值的成员的值是你所指定的值。当然,无论你是否手动指定枚举成员的值,递增步长都不会变,总是为1。为了测试你是否理解,请说出下面枚举个成员的值以及你的判断理由(请用人脑而不是电脑来运行以下代码):

publicenumDriveType:sbyte
{
CDRom,
Fixed=-2,
Network,
NoRootDirectory=-1,
Ram,
Removable=Network*NoRootDirectory,
Unknown
}
publicenumCustomerKind
{
Normal=90,
Vip=80,
SuperVip=70,
InActive=100
}
publicclassCustomer
{
publicreadonlyCustomerKindKind;
privatedoublem_Payment;
publicdoublePayment
{
returnm_Payment*(int)Kind/100;
}

  为枚举CustomerKind的每个成员都赋了一个特定的值,该值其实是顾客购物折扣百分率。而在Customer类中,Payment属性通过强类型转换来获取枚举成员的值(也是购物折扣率),并用于货款计算。从这里可以看出,获取枚举成员的值还可以通过强类型转换方式。

  // Code here

  }

  枚举类型可以强制转换为整数,整数也可以强制转换为枚举类型

Alignment a = (Alignment)1;但这种机制可能使你遇到一些麻烦
public static bool IsAlignment(Alignment a)
{
switch(a)
{
case Alignment.Left:
case Alignment.Center:
case Alignment.Right:
return true;
default:
return false;
}
}

  枚举类型转换(解析)成字符串类型

  简单的方法是使用System.Enum的public override string ToString(); 或者把枚举类型转换为IConvertible接口,再调用该接口的string ToString(IFormatProvider provider);

static void Main()
{
Alignment a = Alignment.Right;
Console.WriteLine("Alignment is {0}.", a.ToString());
FontStyle fs = FontStyle.Bold | FontStyle.Underline;
Console.WriteLine("FontStyle is {0}.", fs.ToString());
}

  手动指定格式参数:Console.WriteLine("Alignment is {0}.", a.ToString("d"));