VB.NET 関数 引数を省略する方法

関数には省略できる引数を設定する事ができます。

Sub Main()
    Dim ret As Integer = 0
    ret = keisan(100, 10)

    Console.WriteLine("計算結果:{0}", ret)

    ret = keisan(100, 10, 0)

    Console.WriteLine("計算結果:{0}", ret)

    ret = keisan(100, 10, 1)

    Console.WriteLine("計算結果:{0}", ret)
End Sub

Function keisan(data1 As Integer, data2 As Integer, Optional flg As Integer = 0) As Integer

    If flg = 0 Then  '0の時は足し算
        Return data1 + data2
    ElseIf flg = 1 Then  '1の時は引き算
        Return data1 - data2
    Else
        Console.WriteLine("エラー")
        Return 0
    End If
End Function
計算結果:110
計算結果:110
計算結果:90

keisan関数は、第1引数と第2引数の値を使って、
足し算か引き算をして結果を返す関数です。

第3引数に、足し算をするか、引き算をするかを判断するフラグを持ちます。

0の場合は足し算、1の場合は引き算となります。


また、Optionalキーワードが付いているので、省略可能引数と言う意味です。

省略された時の値は = を使って指定します(このプログラム例では0)

第3引数は省略できますが、明示的に指定しても問題はありません。


省略可能引数は、引数の一番最後に指定するようにします。

例えば、以下のような書き方はコンパイルエラーとなってしまいます。

Function keisan(Optional flg As Integer = 0, data1 As Integer, data2 As Integer) As Integer

今度は、省略可能引数を3つ設定し、途中の引数を省略した書き方です。

Sub keisan(d As Integer, Optional flg1 As Integer = 0,
                         Optional flg2 As Integer = 0, Optional flg3 As Integer = 0)

keisan(data, 0, , 1)

第3引数を省略した書き方ですが、これは正常動作します。