簡體   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