VB.NET 関数 可変引数の使い方 ParamArray

引数の数が不定の関数を作る事が可能です。

可変長引数の使い方

Sub Main()

    Dim ret As Integer = 0

    ret = keisan(1, 2, 3)
    Console.WriteLine(ret)

    ret = keisan(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    Console.WriteLine(ret)

    ret = keisan()
    Console.WriteLine(ret)

    ret = keisan(Nothing)
    Console.WriteLine(ret)

End Sub

Function keisan(ParamArray args As Integer()) As Integer

    If (args Is Nothing) Then
        Return -2
    End If

    If (args.Length = 0) Then
        Return -1
    End If

    Dim sum As Integer = 0
    For Each n As Integer In args
        sum += n
    Next

    Return sum

End Function
合計:6
合計:55
引数ゼロ:-1
Nothing:-2

可変長引数を設定したプログラム例です。

ParamArrayキーワードと、引数を配列形式で記述します。

keisan関数は、引数で指定された数値を全て足して結果を返す関数です。

引数が可変長のため、引数をいくらでも追加でき、

とても利便性が高くなっています。

注意点として、引数なしで呼び出された場合と、

引数Nothingで呼び出された場合のエラー処理が必要です。

可変長引数の使い方(String型)

今度は文字列型(String型)のサンプルです。

Sub Main()

    Dim ret As String

    ret = strConnect("aaa", "bbb", "ccc")
    Console.WriteLine(ret)

    ret = strConnect()
    Console.WriteLine("引数ゼロ:{0}", ret)

    ret = strConnect(Nothing)
    Console.WriteLine("Nothing:{0}", ret)

End Sub

Function strConnect(ParamArray args As String()) As String

    If (args Is Nothing) Then
        Return "-2"
    End If

    If (args.Length = 0) Then
        Return "-1"
    End If

    Dim str As String = ""
    For Each data As String In args
        str += data
    Next

    Return str

End Function
aaabbbccc
引数ゼロ:-1
Nothing:-2

strConnect関数は、引数で指定された文字列を

全て結合して結果を返す関数です。