引数の数が不定の関数を作る事が可能です。
可変長引数の使い方
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関数は、引数で指定された文字列を
全て結合して結果を返す関数です。