如何在Vb.Net中隐式转换枚举类型
我正在犯错误 错误BC30512 Option Strict On不允许从“clsDataTypes.enmMiscTransTypes”到“clsDataTypes.enmMiscTransDistributions”的隐式转换 下面提到的是代码,我正在将一个可选参数传递给下面这样的子对象如何在Vb.Net中隐式转换枚举类型,vb.net,Vb.net,我正在犯错误 错误BC30512 Option Strict On不允许从“clsDataTypes.enmMiscTransTypes”到“clsDataTypes.enmMiscTransDistributions”的隐式转换 下面提到的是代码,我正在将一个可选参数传递给下面这样的子对象 Public Sub NotifyDisbursementDistribChanged( Optional ByVal enmRemovedDistribOption As clsDataTypes
Public Sub NotifyDisbursementDistribChanged(
Optional ByVal enmRemovedDistribOption As clsDataTypes.enmMiscTransDistributions = clsDataTypes.enmMiscTransTypes.ValueNotSet)
End Sub
这两种是枚举类型
Public Enum enmMiscTransDistributions
ValueNotSet = -1
Check = 0
Wire = 1
PlanWire = 3
Test2= 9
End Enum
Public Enum enmMiscTransTypes
ValueNotSet = -1
MiscReceipt = 1
test2= 9
test5= 11
End Enum
那么为什么要使用其他枚举类型呢
Public Sub NotifyDisbursementDistribChanged(
Optional ByVal enmRemovedDistribOption As clsDataTypes.enmMiscTransDistributions = clsDataTypes.enmMiscTransDistributions.ValueNotSet)
End Sub
我的意思是,使用错误的枚举有什么意义?它们都有ValueNotSet=-1。所以只需使用正确的一个…?尝试使用Or:
DirectCast(enmMiscTransTypes.ValueNotSet,enmmisctrandistributions)
Ctype将无法工作,因为您可以看到我正在分配一个值(.ValueNotSet=-1)CType
只要值对应,就可以完全按照需要工作;在这种情况下,它们在两个枚举中的ValueNotSet
都是-1。但是,鉴于ValueNotSet
是两个枚举中唯一的等效值,您可能不应该尝试转换,而应该更改为使用正确的枚举(或者可能是只有ValueNotSet
)的普通枚举。不清楚您为什么要使用另一个枚举。谢谢。我将按您所说的那样使用。@vandy很棒。我只是好奇,为什么您一开始就试图从错误的枚举设置默认值?