如果VB.NET的Condition(IIf)不等于C#(?:)
本文关键字:不等于 VB IIf Condition 如果 NET | 更新日期: 2023-09-27 18:01:33
VB.NET中的IIf函数:
IIf(condition As Boolean, TruePart As Object, FalsePart As Object) As Object
精确不等于C#条件运算符(?:(:
condition ? first_expression : second_expression;
当我将一些代码从c#转换到vb.net时,我知道转换后的代码不能正确工作,因为在vb.net中,如果条件在检查条件之前同时计算true和false部分!
例如,C#:
public int Divide(int number, int divisor)
{
var result = (divisor == 0)
? AlertDivideByZeroException()
: number / divisor;
return result;
}
VB。NET:
Public Function Divide(number As Int32, divisor As Int32) As Int32
Dim result = IIf(divisor = 0, _
AlertDivideByZeroException(), _
number / divisor)
Return result
End Function
现在,我的c#代码执行成功,但每次divisor
不等于零时,vb.net代码都会同时运行AlertDivideByZeroException()
和number / divisor
。
为什么会发生这种情况
和
如何以及用什么替换VB.net中的c#if条件运算符(?:(
在Visual Basic中,相等运算符是=
,而不是==
。您只需要将divisor == 0
更改为divisor = 0
。
此外,正如Mark所说,您应该使用If
而不是IIf
。从If
:An If operator that is called with three arguments works like an IIf function except that it uses short-circuit evaluation.
的文档来看,由于C#使用短路评估,您将希望在VB.
If
来实现相同的功能