結論から言うとvb.netには三項演算子はありません。
三項演算子とは
条件式が真と偽のときの処理をコンパクトに書くのに適しています。
例えばこのような式があるとしたら長いですよね。
‘真の処理
Else
‘偽の処理
End If
他の言語だと三項演算子で書けてしまうのです。
三項演算子の処理と言うと誤解されそうですが条件式に限られます。
IIf 関数を使います。
公式から
Public Function IIf( _
ByVal Expression As Boolean, _
ByVal TruePart As Object, _
ByVal FalsePart As Object _
) As Object
IIf(条件式,真,偽)
Public Class Form1Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox1.Text = IIf(TextBox1.Text = “”, 3, 2)
End Sub
End Class
実行結果
テキストボックスが空なら3
それ以外なら2です。
IIf 関数はvb6までにあった関数みたいですね。
確かvbaにもあるらしいし。
公式から
必要条件
名前空間 : Microsoft.VisualBasic
モジュール : Interaction
アセンブリ :Visual Basic ランタイム ライブラリ (Microsoft.VisualBasic.dll)
それともうひとつ実は方法があって
2008からif演算子ができたらしい。
Public Class Form1Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox1.Text = If(TextBox1.Text = “”, 3, 2)
End Sub
End Class
実行結果
前のサンプルと一緒です。
意味がないじゃあないかと思われたと思いますが。
意味はありますよ。
IIf 関数は3つの引数を全て評価します。
If演算子は引数2つを評価してショートサーキット評価を使用します。
公式から
3 つの引数で呼び出される If 演算子は IIf 関数と同じように機能しますが、ショートサーキット評価を使用する点が異なります。IIf 関数は常に 3 つの引数すべてを評価しますが、3 つの引数の If 演算子が評価する引数は 2 つのみです。1 番目の If 引数が評価され、結果が Boolean 値つまり True または False としてキャストされます。値が True の場合、argument2 は評価されて値が返されますが、argument3 は評価されません。Boolean 式の値が False の場合は、argument3 が評価されて値が返され、argument2 は評価されません。3 つの引数で If を使用した場合の例を次に示します。