在表达式中使用IIf

时间:2013-01-20 02:43:41

标签: vb.net

假设totallvl是一个整数且chclass1已创建但chclass2尚未创建,我为什么要这样做:

totallvl = chclass1.level
If chclass2 IsNot Nothing Then
    totallvl = totallvl + chclass2.level
End If

但不是吗?

totallvl = chclass1.level + IIf(chclass2 Is Nothing, 0, chclass2.level) 

这就像编译器假设我在这个例子中使用chclass2但在第一个例子中没有。

2 个答案:

答案 0 :(得分:5)

IIf只是一个功能;无论第一个参数是什么,都会评估chclass2.level。如果您想要一个类似于其他语言的内联条件运算符,请使用实际的内联If(在VB 2008及更高版本中可用):

If(chclass2 Is Nothing, 0, chclass2.level)

答案 1 :(得分:2)

因为调用函数时会解析所有函数参数。 if语句只在​​语句块的“true”部分运行代码。