vb.net 三項演算子 IIf関数 If演算子

      2017/07/13


結論から言うとvb.netには三項演算子はありません。

三項演算子とは

条件式が真と偽のときの処理をコンパクトに書くのに適しています。

例えばこのような式があるとしたら長いですよね。

If TextBox1.Text = "" Then
'真の処理
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 を使用した場合の例を次に示します。

基礎文法をサンプルコードや文章で解説しています。

変数と型と演算子

インクリメント デクリメント

vb-net入門-三項演算子 IIf関数 If演算子

値型と参照型

構造体

IfとSelect Case条件文

For NextとFor Each条件文

Do While Loop条件文

イベント

イベントハンドラの追加と削除

デリケート

マルチキャストデリケート

ラムダ式

クラス

継承

隠蔽

ポリモーフィズム

抽象クラスと抽象メソッド

インターフェース

ジェネリック

LINQ

例外処理

配列

コレクション

サブルーチンとファンクション

PR



 - 基礎文法

Translate »