将枚举明确地转换为声明类型的目标是什么,例如
enum MyEnum : long
{
Zero,
One,
};
long one = (long)MyEnum.Zero; // <-- explicit conversion
对此有合理的解释吗?
答案 0 :(得分:3)
有几个原因,但我使用它的主要原因是将字段保存到数据库时。数据库中的列的数据类型为int
(在我的情况下),我使用转换来允许我将枚举值保存在表中。
答案 1 :(得分:1)
枚举的基础类型(在您的情况下为long
)仅指定为每个枚举器分配的存储量。枚举本身的类型为System.Enum
,因此您需要显式转换。
答案 2 :(得分:0)
该声明告诉编译器您将使用大值,但枚举仍然是枚举,并且它不会隐式转换为任何类型。我想你应该知道自己在做什么。
来自C#参考http://msdn.microsoft.com/pl-pl/library/sbbt4032.aspx
在以下示例中,base-type选项用于声明其成员类型为long的枚举。请注意,即使枚举的基础类型很长,枚举成员仍然必须通过使用强制转换显式转换为long类型。