首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Resharper代码检查错误?

Resharper代码检查错误?
EN

Stack Overflow用户
提问于 2014-12-20 02:28:49
回答 1查看 100关注 0票数 3

示例:

代码语言:javascript
运行
复制
Public Enum Vehicles As Integer
    Car = 0
    MotorBike = 1
    Plane = 2
End Enum

要获得每个车辆成员值(012),我想我必须将其转换成这样:

代码语言:javascript
运行
复制
DirectCast(Vehicles.Car, Integer)

但是,Resharper可以在intellisense上生成此警告:

“不能将类型车辆的表达式转换为整数类型”

为什么会这样呢?这是个虫子吗?对于我来说,有另外一种方法可以在不转换的情况下获得每个成员的值吗?(Cint等.)

EN

回答 1

Stack Overflow用户

发布于 2014-12-20 04:54:03

首先,约定要求您的枚举命名为Vehicle,即单数,而不是Vehicles,即复数。如果对值使用2的幂,并应用Flags属性,则只应对枚举使用复数名称,从而允许该类型的变量同时存储多个值。

代码语言:javascript
运行
复制
<Flags>
Public Enum Vehicles As Integer
    Car = 1
    MotorBike = 2
    Plane = 4
End Enum

显然,在这种特殊情况下,这是适当的,但是有许多枚举是这样声明的。

至于这个问题,它大概是ReSharper中的一个bug,因为VB代码编译和运行时没有问题。我的猜测是,当使用DirectCast时,ReSharper寻找直接继承或实现关系,在枚举和整型中找不到这种关系。如果您使用CInt,那么您将不会收到警告,因为CInt不需要这样的关系。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27576398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档