動的仮引数
可変個のパラメータ
プログラムの性質によっては、用途によって引数の数が変化するメソッドを求められることがあります
一般的な言語では、この場合は配列の引数を渡すことで解決することができます
しかし、より直感的に記述するために C# 言語では可変個のパラメータ処理をサポートします
これは、C言語プログラマに printf() を思い出させるでしょう
C# 言語は C/C++ の思想を引き継いでこれを可能としています
当然 C# の型の統一性を考えれば、どのような型も可変個で受け取ることができる
printf() 関数のような自由で高度なメソッドを作成することもできるのです
可変個の引数を受け取るには params 修飾子を指定します
この修飾子が用いられる場合、必ず最後の引数でなければなりません
また、ref や out 修飾子との併用はできません
params type[] name;
type には仮引数の型、name には仮引数名を指定します
これをメソッドの仮パラメータリストで指定することで、可変個のパラメータを受け取れます
取得した引数は、全てリストの配列に順に格納されています
配列は必ず1次元配列でなければなりません
こうすれば、指定した型に互換性のある引数を動的に渡すことができます
または、指定した型の1次元配列を渡すことも可能です
class Test {
public static void GetString(params string[] str) {
for(int i = 0 ; i < str.Length ; i++)
System.Console.WriteLine(str[i]);
System.Console.WriteLine("");
}
static void Main() {
GetString("Kitty on your lap");
GetString("Silver Gene" , "Tokyo mew mew");
GetString("Rena" , "Yuki" , "Mimi");
GetString(new string[] {"Di Gi Charat" , "Petit Charat"});
}
}
これは、文字列型の引数を可変個数受け取る GetString() メソッドを作っています
このメソッドは、適当な数の文字列を受け取りそれを全てコンソールに出力します
あらゆる型を受け取るメソッドを作りたければ Object 型を可変個受け取れば良いですね
params
可変個のパラメータを受け取ることを表す修飾子です
この修飾子は仮パラメータリスト内で指定します
この修飾子を受けた仮パラメータは、必ず最後のパラメータである必要があります
また、このパラメータは常に1次元配列です