我有以下枚举
public enum TESTENUM
{
Value1 = 1,
Value2 = 2
}
然后我想用它来比较我所拥有的整数变量,如下所示:
if ( myValue == TESTENUM.Value1 )
{
}
但是为了做这个测试,我必须按如下方式强制转换枚举(或者可能将整数声明为类型枚举):
if ( myValue == (int) TESTENUM.Value1 )
{
}
有没有办法可以告诉编译器枚举是一系列整数,这样我就不必执行此操作或重新定义变量了?
答案 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 ++不同),并且有充分的类型安全理由。