gpt4 book ai didi

.net - 条件语句产生与 If Then 不同的结果

转载 作者:行者123 更新时间:2023-12-04 20:46:10 24 4
gpt4 key购买 nike

试图深入了解一个小谜团。

我有以下 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 推断类型。运算符(operator)。两个操作数必须是相同的类型。给定 Nothing一侧和一个 Guid另一方面,它假定结果类型应该是 Guid ,所以它强制 NothingGuid.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, Nothing, CType(vendor.Address.ID, Nullable(Of Guid)))

关于.net - 条件语句产生与 If Then 不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17685890/

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