将枚举转换为int

我有以下枚举

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

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

 if ( myValue == TESTENUM.Value1 ) { } 

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

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

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

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

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

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

你可以告诉枚举它包含整数:

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

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

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

没有(不像C ++),并且出于类型安全的充分理由。