【发布时间】:2015-10-23 02:02:49
【问题描述】:
我有一个具有以下重载的方法:
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 告诉我演员阵容是多余的。但是为什么没有演员表我的电话不模棱两可?
【问题讨论】:
-
即使它对编译器来说并不模棱两可,我也会将演员表保留在那里,因为它对阅读代码的人来说可能是模棱两可的
-
@jean 不,这不是原因。我告诉编译器使用哪个重载。并且使用哪个方法重载确实很重要,因为它们可能具有完全不同的实现。
null是null,但这里的演员表暗示应该使用哪个重载。 -
@jean 恐怕这又错了。强制转换只是多余的,因为即使我不强制转换为
JObject,编译器仍然会使用JObject重载,因为它使用与参数匹配的最具体的重载,并且null可以匹配任何内容,并且JObject比object更具体。有关详细说明,请参阅 Jon Skeet 的回答。
标签: c# casting overloading