Ho un metodo con le seguenti sovraccarichi:Perché questo cast è ridondante?
string Call(string function, Dictionary<string, object> parameters, object body)
string Call(string function, Dictionary<string, object> parameters, JObject body)
Ora ho aggiunto un altro di sovraccarico:
string Call(string function)
{
return Call(function, null, (JObject) null);
}
ho aggiunto un cast al JObject
in modo che il compilatore sa che sovraccarico dovrebbe usare. Ma Visual Studio mi dice che il cast è ridondante. Ma perché la mia chiamata non è ambigua senza il cast?
Anche se non è ambiguo per il compilatore, terrei il cast lì come potrebbe essere ambiguo alla persona che legge il codice – Alex
@jean No, non è questo il motivo. Sto dicendo al compilatore quale sovraccarico usare. Inoltre, è importante sapere quale overload di metodo viene utilizzato poiché potrebbero avere implementazioni completamente diverse. 'null' è' null', ma il cast qui è un suggerimento su quale sovraccarico dovrebbe essere usato. – fero
@jean Ho paura che questo sia di nuovo sbagliato. Il cast è ridondante solo perché il compilatore _still_ userà il sovraccarico 'JObject' anche se non scrivo su' JObject' perché usa il sovraccarico più specifico che corrisponde ai parametri, e 'null' può corrispondere a qualsiasi cosa e' JObject' è più specifico di "oggetto". Vedi la risposta di Jon Skeet per una spiegazione dettagliata. – fero