2 番目のメソッドが呼び出されます。完全に一致するものが見つかった場合は、params の前に使用されます。
MSDN から:
オーバーロードの解決を実行する場合、パラメーター配列を持つメソッドは、通常の形式または拡張された形式のいずれかで適用できます (セクション 7.4.2.1)。メソッドの展開された形式は、メソッドの通常の形式が適用されず、展開された形式と同じシグネチャを持つメソッドが同じ型でまだ宣言されていない場合にのみ使用できます。
彼らの例:
using System;
class Test
{
static void F(params object[] a) {
Console.WriteLine("F(object[])");
}
static void F() {
Console.WriteLine("F()");
}
static void F(object a0, object a1) {
Console.WriteLine("F(object,object)");
}
static void Main() {
F();
F(1);
F(1, 2);
F(1, 2, 3);
F(1, 2, 3, 4);
}
}
出力:
F();
F(object[]);
F(object,object);
F(object[]);
F(object[]);