C#で複数のparams
パラメータを持つことは可能ですか? このようなもの:
void foobar(params int[] foo, params string[] bar)
しかし、それが可能かどうかはわかりません。もしそうなら、コンパイラは引数をどこで分割するかをどのように決定しますか?
C#で複数のparams
パラメータを持つことは可能ですか? このようなもの:
void foobar(params int[] foo, params string[] bar)
しかし、それが可能かどうかはわかりません。もしそうなら、コンパイラは引数をどこで分割するかをどのように決定しますか?
params 引数は 1 つしか持てません。2 つの配列引数を持つことができ、呼び出し元は配列初期化子を使用してメソッドを呼び出すことができますが、params 引数は 1 つしか存在できません。
void foobar(int[] foo, string[] bar)
...
foobar(new[] { 1, 2, 3 }, new[] { "a", "b", "c" });
いいえ、これは不可能です。これを取る:
void Mult(params int[] arg1, params long[] arg2)
コンパイラはこれをどのように解釈することになっていますか:
Mult(1, 2, 3);
次のいずれかとして読み取ることができます。
Mult(new int[] { }, new long[] { 1, 2, 3 });
Mult(new int[] { 1 }, new long[] { 2, 3 });
Mult(new int[] { 1, 2 }, new long[] { 3 });
Mult(new int[] { 1, 2, 3 }, new long[] { });
ただし、次のように 2 つの配列をパラメーターとして使用できます。
void Mult(int[] arg1, params long[] arg2)
MSDNから- params
メソッド宣言の params キーワードの後にパラメータを追加することはできません。また、メソッド宣言で使用できる params キーワードは 1 つだけです。
いいえ、単一のパラメーターのみが許可されており、それも最後の引数でなければなりません。これを読む
これはうまくいきます
public void Correct(int i, params string[] parg) { ... }
しかし、これはうまくいきません
public void Correct(params string[] parg, int i) { ... }
不可能です。メソッド宣言ごとに 1 つの params キーワードのみにすることができます - MSDN から - http://msdn.microsoft.com/en-us/library/w5zay9db(v=vs.71).aspx
void useMultipleParams(int[] foo, string[] bar)
{
}
useMultipleParams(new int[]{1,2}, new string[] {"1","2"})