gpt4 book ai didi

.net - 带有 'If' 条件的 VB.NET 'Or' 语句是否双方都进行了评估?

转载 作者:行者123 更新时间:2023-12-03 10:07:41 25 4
gpt4 key购买 nike

快速问题,其中最快和最简单的答案很可能是重新排列相关代码,但让我们看看......

所以我有一个 If语句(一段代码,它是用 C# 编写的完整工作解决方案的一部分)使用 VB.NET 重写。我知道 VB.NET IIf(a, b, c)方法同时评估 ba无论第一次评估的真实性如何,但在我的标准构造中似乎也是如此:

If (example Is Nothing Or example.Item IsNot compare.Item) Then
'Proceed
End If

或者,更恰本地说:
If (example Is Nothing Or Not example.Item = compare.Item) Then
'Proceed
End If

在这里,如果 exampleNothing ( null ) 然后我仍然得到一个 NullReferenceException - 这是我的错,还是我只能在 VB.NET 的心血来潮中忍受?

最佳答案

这是你的“错”,这就是 Or 已定义,因此这是您应该期望的行为:

In a Boolean comparison, the Or operator always evaluates both expressions, which could include making procedure calls. The OrElse Operator (Visual Basic) performs short-circuiting, which means that if expression1 is True, then expression2 is not evaluated.



但你不必忍受它。您可以使用 OrElse 获得短路行为。

所以你可能想要:
If (example Is Nothing OrElse Not example.Item = compare.Item) Then
'Proceed
End If

我不能说它读起来非常好,但它应该可以工作......

关于.net - 带有 'If' 条件的 VB.NET 'Or' 语句是否双方都进行了评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4723249/

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