【发布时间】:2018-10-09 16:57:38
【问题描述】:
我遇到了错误。
错误 BC30512 Option Strict On 不允许从“clsDataTypes.enMMiscTransTypes”到“clsDataTypes.enMMiscTransDistributions”的隐式转换”。
下面提到的是代码,我正在将一个可选参数传递给一个 sub,如下所示。
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
【问题讨论】:
-
尝试使用CType
-
或DirectCast():
DirectCast(enmMiscTransTypes.ValueNotSet, enmMiscTransDistributions) -
Ctype 将不起作用,因为您可以看到我正在分配一个值(.ValueNotSet=-1)
-
CType只要值对应,就会完全按照需要工作;在这种情况下,它们的作用是ValueNotSet在两个枚举中都是 -1。但是,鉴于ValueNotSet是两个枚举中的 only 等效值,也许您不应该尝试转换,而应该更改为使用正确的枚举(或者可能是一些常见的枚举只有ValueNotSet)。目前尚不清楚您为什么要尝试使用其他枚举。
标签: vb.net