gpt4 book ai didi

vb.net - Resharper 代码检查错误?

转载 作者:行者123 更新时间:2023-12-01 11:55:43 25 4
gpt4 key购买 nike

例子:

Public Enum Vehicles As Integer
Car = 0
MotorBike = 1
Plane = 2
End Enum

要获取每个车辆成员值(012),我想我必须像这样转换它:

DirectCast(Vehicles.Car, Integer)

它工作正常,但是,Resharper 在 intellisense 上产生这个警告:

"Cannot cast expression of type Vehicles to type Integer"

这是为什么呢?这是一个错误吗?有没有另一种方法可以让我在不转换的情况下获得每个成员的值(value)? (Cint 等...)

最佳答案

首先,约定要求您的枚举被命名为 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 不需要这样的关系。

关于vb.net - Resharper 代码检查错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com