gpt4 book ai didi

vb.net - 而且在IIF中也不要短路

转载 作者:行者123 更新时间:2023-12-02 06:50:26 24 4
gpt4 key购买 nike

任何人都可以详细说明一下,如果foo为Nothing,为什么第二个抛出InvalidOperationException“Nullable对象必须具有值”?我希望它的工作原理与第一个代码片段相同,但是显然我缺少了一些东西:

片段1:

If foo IsNot Nothing AndAlso foo.HasValue Then
_foo = foo.Value.Days
Else
_foo = 365
End If

如果foo为Nothing,则不会抛出异常(如预期)

片段2:
_foo = CInt(IIf(foo IsNot Nothing AndAlso foo.HasValue, foo.Value.Days, 365))

如果foo为Nothing,则抛出InvalidOperationException-为什么?

最佳答案

因为旧的 IIf function不是新的 If operator。旧的不会短路,而新的不会短路。

_foo = If(foo IsNot Nothing AndAlso foo.HasValue, foo.Value.Days, 365)

您也不需要使用 If进行强制转换,而无需使用 IIf

您可以使用新的 null-conditional-operator ?使其更加简洁:
_foo = If(foo?.Days, 365)

带有2个参数的 If -operator是一个空合并符,其中3个用作条件运算符。

关于vb.net - 而且在IIF中也不要短路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45860706/

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