Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果VB.NET(IIf)的条件不等于C#(?:)_C#_Vb.net_If Statement_Iif - Fatal编程技术网

如果VB.NET(IIf)的条件不等于C#(?:)

如果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

在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_
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;
}