将枚举转换为int

时间:2010-06-22 07:59:25

标签: c# enums casting

我有以下枚举

public enum TESTENUM
{
    Value1 = 1,
    Value2 = 2
}

然后我想用它来比较我所拥有的整数变量,如下所示:

if ( myValue == TESTENUM.Value1 )
{
}

但是为了做这个测试,我必须按如下方式强制转换枚举(或者可能将整数声明为类型枚举):

if ( myValue == (int) TESTENUM.Value1 )
{
}

有没有办法可以告诉编译器枚举是一系列整数,这样我就不必执行此操作或重新定义变量了?

4 个答案:

答案 0 :(得分:12)

没有。您需要转换枚举值。如果您不想强制转换,请考虑使用具有常量int值的类:

class static EnumLikeClass
{
    public const int Value1 = 1;
    public const int Value2 = 2;
}

然而,这有一些缺点;缺乏类型安全是使用enum的重要原因。

答案 1 :(得分:2)

你可以告诉enum它包含整数:

public enum TESTENUM: int
{
    Value1 = 1,
    Value2 = 2
}

但是你必须手动投射它们,

答案 2 :(得分:2)

请记住,在上下文中转换枚举值正是如何告诉编译器“看这里,我知道这个枚举值是int类型,所以请使用它”

答案 3 :(得分:1)

不存在(与C ++不同),并且有充分的类型安全理由。