如果VB.NET(IIf)的条件不等于C#(?:)
在VB.NET中:如果VB.NET(IIf)的条件不等于C#(?:),c#,vb.net,if-statement,iif,C#,Vb.net,If Statement,Iif,在VB.NET中: IIf(condition As Boolean, TruePart As Object, FalsePart As Object) As Object 完全不等于C#: 当我将一些代码从c#转换到vb.net时,我知道转换后的代码不能正常工作,因为在vb.net中,if conditional在检查条件之前计算了true和false部分 例如,C#: VB.NET: 公共函数除法(数字为Int32,除数为Int32)为Int32 Dim结果=IIf(除数=0_ Alert
IIf(condition As Boolean, TruePart As Object, FalsePart As Object) As Object
完全不等于C#:
当我将一些代码从c#转换到vb.net时,我知道转换后的代码不能正常工作,因为在vb.net中,if conditional在检查条件之前计算了true和false部分
例如,C#:
VB.NET:
公共函数除法(数字为Int32,除数为Int32)为Int32
Dim结果=IIf(除数=0_
AlertDivideByZeroException()_
数字/除数)
返回结果
端函数
现在,我的c#代码成功执行,但是vb.net代码每次除数
不等于零时,都会运行AlertDivideByZeroException()
和数字/除数
为什么会发生这种情况?
及
如何以及用什么替换VB.net中的c#if条件运算符(?:)在Visual Basic中,相等运算符是
=
,而不是=
。您只需将除数==0更改为除数=0
此外,正如Mark所说,您应该使用
If
而不是IIf
。从If
的文档中:使用三个参数调用的If运算符的工作原理与IIf函数类似,只是它使用短路求值。
由于C使用短路求值,因此您将希望在VB中对相同的功能使用If
。使用而不是IIf(…)
。IIf是一个函数,还有一个“新的”If操作符,它将链接标记为不完全重复,但有很多有趣的信息。对不起,我编辑它是因为键入错误。
condition ? first_expression : second_expression;
public int Divide(int number, int divisor)
{
var result = (divisor == 0)
? AlertDivideByZeroException()
: number / divisor;
return result;
}