可変長引数①
ちょっと難しい言葉ですが、要はメソッドに渡せる引数の数が可変ということです。
例えば以下のような同じ種の引数を複数必要とするメソッドを考えます。単純に引数を足す処理です。
引数は配列となっているので、当然メンバー変数を一旦配列に変換して引数に渡す必要があります。
private void TotalSum1(int[] values) { int res = 0; foreach(int v in values) { res += v; } Console.WriteLine(res); } public static void Main() { int a = 1; int b = 3; int c = 5; int d = 7; int[] values = { a, b, c, d}; TotalSum1(values); }
Private Sub TotalSum1(ByVal values As Integer()) Dim res As Integer = 0 For Each v As Integer In values res += v Next Console.WriteLine(res) End Sub Public Sub Main() Dim a As Integer = 1 Dim b As Integer = 3 Dim c As Integer = 5 Dim d As Integer = 7 Dim values As Integer() = {a, b, c, d} TotalSum1(values) End Sub
これを可変長引数にすると、呼び出し元で配列に変換する必要が無くなります。
C#はparamsキーワードを利用します。
private void TotalSum2(params int[] values) { int res = 0; foreach (int v in values) { res += v; } Console.WriteLine(res); } public static void Main() { TotalSum2(a, b, c, d); }
VB.NETはByValの代わりにParamArrayキーワードを指定します。
Private Sub TotalSum2(ParamArray values As Integer()) Dim res As Integer = 0 For Each v As Integer In values res += v Next Console.WriteLine(res) End Sub Public Sub Main() TotalSum2(a, b, c, d) End Sub
引数で勝手に配列にしてくれるようなイメージですね。