【问题标题】:how do I implicitly convert enumtypes in Vb.Net如何在 Vb.Net 中隐式转换枚举类型
【发布时间】: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


【解决方案1】:

那么为什么要使用其他枚举类型呢?

Public Sub NotifyDisbursementDistribChanged(
    Optional ByVal enmRemovedDistribOption As clsDataTypes.enmMiscTransDistributions = clsDataTypes.enmMiscTransDistributions.ValueNotSet)

End Sub

我的意思是,使用错误的枚举有什么意义?他们都有 ValueNotSet = -1。所以只使用正确的...?

【讨论】:

  • 谢谢..我会按照你说的那样使用。
  • @vandy 很棒。我只是好奇,你为什么一开始就尝试从错误的枚举中设置默认值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多