我有这个课
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)
'
我可以理解,添加一个方法可能会引入一个电话不确定性,但它的两种方法之间的不确定性已经存在的(params string[])
和<string>(string)
!显然,模棱两可的两种方法都不是新添加的方法,因为第一种是参数,第二种是泛型。
这是一个错误吗?规范的哪一部分说应该是这种情况?
'Overloaded.ComplexOverloadResolution(string)'
是<string>(string)
方法。我认为它是指(string, object)
没有提供对象的方法。