不特定の数のパラメータの使用 (C# と Java の比較)
更新 : 2007 年 11 月
C# では、メソッドの宣言時に params キーワードを指定することで、可変数のパラメータをメソッドに送ることができます。引数リストには、標準のパラメータを含めることもできますが、params キーワードで宣言されたパラメータを最後に置く必要があります。この params パラメータは、可変長配列の形式を取り、メソッドごとに 1 つのみ使用できます。
コンパイラがメソッド呼び出しを解決するときは、呼び出されるメソッドに引数リストが一致するメソッドを検索します。引数リストに一致するメソッド オーバーロードが見つからなくても、適切な型の params パラメータを含む一致するバージョンが存在する場合は、そのメソッドが呼び出され、追加のパラメータが配列に置かれます。
この考えを次のコード例に示します。
class TestParams
{
private static void Average(string title, params int[] values)
{
int sum = 0;
System.Console.Write("Average of {0} (", title);
for (int i = 0; i < values.Length; i++)
{
sum += values[i];
System.Console.Write(values[i] + ", ");
}
System.Console.WriteLine("): {0}", (float)sum/values.Length);
}
static void Main()
{
Average ("List One", 5, 10, 15);
Average ("List Two", 5, 10, 15, 20, 25, 30);
}
}
上の例では、メソッド Average が、型整数配列の params パラメータで宣言されているため、任意の数の引数で呼び出すことができます。この出力を次に示します。
Average of List One (5, 10, 15, ): 10
Average of List Two (5, 10, 15, 20, 25, 30, ): 17.5
型の異なる不特定のパラメータを使用できるようにする場合は、Object 型の params パラメータを指定できます。
参照
概念
参照
パラメータとしての配列の受け渡し (C# プログラミング ガイド)