示例:
Public Enum Vehicles As Integer
Car = 0
MotorBike = 1
Plane = 2
End Enum
要获得每个车辆成员值(0
、1
、2
),我想我必须将其转换成这样:
DirectCast(Vehicles.Car, Integer)
但是,Resharper可以在intellisense上生成此警告:
“不能将类型车辆的表达式转换为整数类型”
为什么会这样呢?这是个虫子吗?对于我来说,有另外一种方法可以在不转换的情况下获得每个成员的值吗?(Cint等.)
发布于 2014-12-19 20:54:03
首先,约定要求您的枚举命名为Vehicle
,即单数,而不是Vehicles
,即复数。如果对值使用2的幂,并应用Flags
属性,则只应对枚举使用复数名称,从而允许该类型的变量同时存储多个值。
<Flags>
Public Enum Vehicles As Integer
Car = 1
MotorBike = 2
Plane = 4
End Enum
显然,在这种特殊情况下,这是适当的,但是有许多枚举是这样声明的。
至于这个问题,它大概是ReSharper中的一个bug,因为VB代码编译和运行时没有问题。我的猜测是,当使用DirectCast
时,ReSharper寻找直接继承或实现关系,在枚举和整型中找不到这种关系。如果您使用CInt
,那么您将不会收到警告,因为CInt
不需要这样的关系。
https://stackoverflow.com/questions/27576398
复制