2

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が、最初の例では使用しません。

4

2 に答える 2

5

IIf単なる関数です。chclass2.level最初の引数が何であるかに関係なく評価されます。他の言語と同様のインライン条件演算子が必要な場合は、実際のインラインIf(VB 2008以降で使用可能)を使用してください。

If(chclass2 Is Nothing, 0, chclass2.level)
于 2013-01-20T02:51:25.817 に答える
2

これは、関数が呼び出されたときにすべての関数の引数が解決されるためです。ifステートメントは、ステートメントブロックの「true」部分でのみコードを実行します。

于 2013-01-20T02:50:26.910 に答える