params
パラメータを別のメソッドに転送できますか?
例えば、
void MyStringMethod(string format, params object[] list)
{
String.Format(format, list);
}
params
パラメータを別のメソッドに転送できますか?
例えば、
void MyStringMethod(string format, params object[] list)
{
String.Format(format, list);
}
私のために働きます。
void Main()
{
Method1("{0},{1},{2},{3}","Can","I","do","this").Dump();
}
String Method1(string format, params object[] list)
{
return String.Format(format,list);
}
戻り値
Can,I,do,this
できると思いますが、これは単なるオブジェクトの配列です。次に、param リストを期待する別の関数を呼び出すと、予期しない結果が得られる可能性があります (もちろん、期待する内容によって異なります:-)。3 番目のケースでは、2 つのパラメーターしか得られないことに注意してください。
void Test()
{
DoIt(1, 2, 3, 4);
}
private void DoIt(params object[] p)
{
Console.WriteLine(p.Length);
DoIt2(p);
DoIt2(p, 5);
}
private void DoIt2(params object[] p)
{
Console.WriteLine(p.Length);
}
params
キーワードは、動的なパラメーター カウントがあるかのようにメソッド呼び出しを行えるようにするために設計された構文糖衣の一種です。実際には、複数の引数を配列のインスタンス化にコンパイラで変換するだけです。それだけです、配列です。
配列は、他のメソッドに渡すことができる単なる別のオブジェクトであり、そうではなく、その配列を転送できます。