我有一个带有以下重载的方法:
string Call(string function, Dictionary<string, object> parameters, object body)
string Call(string function, Dictionary<string, object> parameters, JObject body)
现在我添加了另一个重载函数:
string Call(string function)
{
return Call(function, null, (JObject) null);
}
我向 JObject
添加了一个强制转换以使编译器知道应该使用哪个重载。但是 Visual Studio 告诉我这个强制转换是多余的。但是如果没有这个强制转换,为什么我的调用不会产生歧义?
null
就是null
,但是这里的强制转换是一个提示,指示应该使用哪个方法重载。 - feroJObject
重载,即使我不将其强制转换为JObject
,因为它使用与参数匹配的最具体的重载,而null
可以匹配任何东西,JObject
比object
更具体。详细解释请见Jon Skeet的回答。 - fero