[英]Why is this cast redundant?
我有以下重载的方法:
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
添加了JObject
以便编译器知道应使用哪个重载。 但是Visual Studio告诉我,转换是多余的。 但是,如果没有演员阵容,为什么我的通话不会模棱两可?
但是,如果没有演员阵容,为什么我的通话不会模棱两可?
因为JObject
参数的重载比object
参数的重载更好……因为从null
到JObject
的转换比从null
到object
的转换“更好”。
JObject
比object
更具体,因为从JObject
到object
存在隐式转换,反之亦然。
如果第一个方法的最终参数是string
(例如),则这两个重载都不会比另一个重载好,并且如果不进行强制转换,则调用将是模棱两可的。
有关所有复杂细节,请参见C#5规范的7.5.3节。 特别是在这里,第7.5.3.5节(“更好的转换目标”)很重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.