[英]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.