私はこのクラスを持っています
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)
!1つはパラメータであり、2つ目はジェネリックであるため、あいまいさを伴う2つのメソッドのどちらも新しく追加されたメソッドではないことは明らかです。
これはバグですか?仕様のどの部分がこれが当てはまると述べていますか?
'Overloaded.ComplexOverloadResolution(string)'
言及しているとは思いません<string>(string)
。(string, object)
オブジェクトが提供されていないメソッドを指していると思います。