私はこのクラスを持っています
public class Overloaded
{
public void ComplexOverloadResolution(params string[] something)
{
Console.WriteLine("Normal Winner");
}
public void ComplexOverloadResolution<M>(M something)
{
Console.WriteLine("Confused");
}
}
私がそれをこのように呼ぶならば:
var blah = new Overloaded();
blah.ComplexOverloadResolution("Which wins?");
Normal Winner
コンソールに書き込みます。
しかし、別のメソッドを追加すると、次のようになります。
public void ComplexOverloadResolution(string something, object somethingElse = null)
{
Console.WriteLine("Added Later");
}
次のエラーが発生します。
次のメソッドまたはプロパティ間で呼び出しがあいまいです:>'
Overloaded.ComplexOverloadResolution(params string[])
'と'Overloaded.ComplexOverloadResolution<string>(string)
'
メソッドを追加すると、呼び出しのあいまいさが生じる可能性があることは理解できますが、これは、既存の2つのメソッド(params string[])
と<string>(string)
!最初のメソッドはparamsであり、2番目のメソッドはジェネリックであるため、あいまいさに関係する2つのメソッドのどちらも新しく追加されたメソッドではないことは明らかです。
これはバグですか?仕様のどの部分がこれが当てはまるはずだと言っていますか?