枚举值转换

时间:2014-09-10 06:27:41

标签: c# casting enums

将枚举明确地转换为声明类型的目标是什么,例如

enum MyEnum : long 
{
   Zero,
   One,
};

long one = (long)MyEnum.Zero; // <-- explicit conversion

对此有合理的解释吗?

3 个答案:

答案 0 :(得分:3)

有几个原因,但我使用它的主要原因是将字段保存到数据库时。数据库中的列的数据类型为int(在我的情况下),我使用转换来允许我将枚举值保存在表中。

答案 1 :(得分:1)

枚举的基础类型(在您的情况下为long)仅指定为每个枚举器分配的存储量。枚举本身的类型为System.Enum,因此您需要显式转换。

答案 2 :(得分:0)

该声明告诉编译器您将使用大值,但枚举仍然是枚举,并且它不会隐式转换为任何类型。我想你应该知道自己在做什么。

来自C#参考http://msdn.microsoft.com/pl-pl/library/sbbt4032.aspx

  

在以下示例中,base-type选项用于声明其成员类型为long的枚举。请注意,即使枚举的基础类型很长,枚举成员仍然必须通过使用强制转换显式转换为long类型。