繁体   English   中英

为什么这是多余的?

[英]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参数的重载更好……因为从nullJObject的转换比从nullobject的转换“更好”。

JObjectobject更具体,因为从JObjectobject存在隐式转换,反之亦然。

如果第一个方法的最终参数是string (例如),则这两个重载都不会比另一个重载好,并且如果不进行强制转换,则调用是模棱两可的。

有关所有复杂细节,请参见C#5规范的7.5.3节。 特别是在这里,第7.5.3.5节(“更好的转换目标”)很重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM