Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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
C#和VB中的差异条件_C#_Vb.net - Fatal编程技术网

C#和VB中的差异条件

C#和VB中的差异条件,c#,vb.net,C#,Vb.net,为什么VB中的条件if不需要处理条件的直接转换。例如,在C#中,这很好 bool i = false; i = (1<2)? true:false; int x = i? 5:6; bool i=false; i=(1IIf是一个函数,并不等同于C的?:,后者是一个运算符 不过,操作符版本在VB.NET中已经存在了一段时间,如果,则称为: Dim i作为布尔值=If(1

为什么VB中的条件if不需要处理条件的直接转换。例如,在C#中,这很好

        bool i = false;

        i = (1<2)? true:false;

        int x = i? 5:6;
bool i=false;

i=(1
IIf
是一个函数,并不等同于C的
?:
,后者是一个运算符

不过,操作符版本在VB.NET中已经存在了一段时间,如果
,则称为

Dim i作为布尔值=If(1<2,真,假)
…这当然是毫无意义的,应该写成:

Dim i作为布尔值=1<2
…或者,使用
选项推断

Dim i=1<2

此代码将向您显示
IIf
函数和
If
运算符之间的差异。因为
IIf
是一个函数,它必须计算所有参数才能传递到函数中

Sub-Main
作为整数的dim i
i=If(True,GetValue(),throweException())设置i=1。由于条件为True,因此不计算false部分
i=IIf(True,GetValue(),ThrowException())引发异常。在检查条件之前,将对True和false部分进行求值
端接头
函数GetValue为整数
返回1
端函数
函数throweexception为整数
抛出新异常
返回0
端函数

IIF
是一个传统的VB函数;请使用较新的
If
操作符尝试它,它的工作原理与您所期望的一样:
Dim i as Boolean=If(1<2,True,False)
谢谢大家提供的信息:)是的@BrianDriscoll我通常不会这么做,我只是想给大家一个简单的逻辑来解释我的意思-谢谢你的确认。谢谢你提供的信息;非常有用。新开发我几乎总是做C#,但我也做很多遗留转换/升级(几乎总是用VB);不知道是否(x,x,x)在VB@alykins:它在VB中不存在,仅在VB.NET中存在,并且仅从2008年起存在。
Dim i as Boolean = CBool(IIF(1<2, True, False))
Dim x as Integer = CInt(IIF(i, 5, 6))
bool i = Convert.ToBoolean((1<2)? True: False);
int x = Convert.ToInt32(i? 5:6);