C#:do enums在上下文中将自己强制转换为字符串或整数

时间:2010-05-06 07:59:03

标签: c# enums casting

如果我有枚举:

public enum VehicleType
{
    Car = 0,
    Boat = 1,
    Bike = 2,
    Spaceship = 3
}
然后我做了:

int X = 10;
VehicleType vt = (VehicleType)2;
X = X + vt;
Console.WriteLine("I travel in a " + vt + " with " + X + " people.");

C#中的输出应该是什么?

4 个答案:

答案 0 :(得分:6)

X = X + vt;中,vt将被转换为int。 在"I travel in a " + vt + " with " + X + " people."中,vt将替换为vt.ToString(),它将打印枚举的名称。

答案 1 :(得分:0)

默认情况下,枚举的基类型为int。如果明确指定,它也可以是byte,sbyte,short,ushort,uint,long或ulong。

X = X + vt会出错,因为它需要是一个明确的演员。

如果是X += (int)vt;,那就是:

“我带着12个人骑自行车旅行。”

因为当使用Console.WriteLine所有变量时,调用ToString()方法,因此给出了Enum的字符串表示形式(枚举为2,等同于Bike,因此返回Bike)。

答案 2 :(得分:0)

它们表示为整数。我希望他们可以被表示为对象!

答案 3 :(得分:-1)

正如其他人已经提到的那样,你只需要一个整数。

这是因为enum的基类型是整数,但是可以通过例如将其更改为任何其他值类型。 public enum VehicleType : ushort

为了更好地处理这些名称,Enum类有一些方便的功能(例如GetName()IsDefined()Parse())。

只是回答问题那你怎么能说enum在你刚刚陈述的内容中表示为int?来自评论:看看http://msdn.microsoft.com/en-us/library/sbbt4032.aspx(特别是使用Flags)对最后一个示例进行了一次体面的研究。