加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

.net – 条件语句产生不同的结果然后If Then

发布时间:2020-12-17 00:01:24 所属栏目:大数据 来源:网络整理
导读:试图找到一个小秘密的底部. 我有以下If声明: Dim myVal As Nullable(Of Guid)myVal = If(vendor.Address.ID = Guid.Empty,Nothing,vendor.Address.ID) myVal的结束值莫名其妙地是Guid.Empty. 如果我写相同的代码如下: Dim myVal As Nullable(Of Guid)If(ve
试图找到一个小秘密的底部.

我有以下If声明:

Dim myVal As Nullable(Of Guid)
myVal = If(vendor.Address.ID = Guid.Empty,Nothing,vendor.Address.ID)

myVal的结束值莫名其妙地是Guid.Empty.

如果我写相同的代码如下:

Dim myVal As Nullable(Of Guid)
If(vendor.Address.ID = Guid.Empty) Then
  myVal = Nothing
Else
  myVal = vendor.Address.ID
End If

为什么不同?

问题在于VB.NET如何使用If运算符推断类型.两个操作数必须是相同的类型.一方面没有任何东西而另一方面没有Guid,它假定结果类型应该是Guid,因此它强制Nothing到Guid.Empty.对任何一方的Nullable(Of Guid)进行显式转换将足以告诉编译器这是你真正想要的.

这应该会给你你期望的结果:

Dim myVal2 As Nullable(Of Guid)
myVal2 = If(vendor.Address.ID = Guid.Empty,CType(Nothing,Nullable(Of Guid)),vendor.Address.ID)

或这个:

Dim myVal2 As Nullable(Of Guid)
myVal2 = If(vendor.Address.ID = Guid.Empty,CType(vendor.Address.ID,Nullable(Of Guid)))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读