c# - programming - ¿Por qué es redundante este elenco?
convert type c# (1)
Tengo un método con las siguientes sobrecargas:
string Call(string function, Dictionary<string, object> parameters, object body)
string Call(string function, Dictionary<string, object> parameters, JObject body)
Ahora agregué otra sobrecarga:
string Call(string function)
{
return Call(function, null, (JObject) null);
}
JObject
un elenco a
JObject
para que el compilador sepa qué sobrecarga debería usar.
Pero Visual Studio me dice que el elenco es redundante.
Pero, ¿por qué mi llamada no es ambigua sin el elenco?
Pero, ¿por qué mi llamada no es ambigua sin el elenco?
Porque la sobrecarga con el parámetro
JObject
es "mejor" que la sobrecarga con el parámetro
object
... porque la conversión de
null
a
JObject
es "mejor" que la conversión de
null
a
object
.
JObject
es más específico que
object
, porque hay una conversión implícita de
JObject
a
object
, pero no al revés.
Si el parámetro final para el primer método fuera una
string
(por ejemplo), entonces ninguna sobrecarga sería mejor que la otra, y la llamada
sería
ambigua sin la conversión.
Consulte la sección 7.5.3 de la especificación C # 5 para ver todos los detalles complejos. En particular, la sección 7.5.3.5 ("mejor objetivo de conversión") es relevante aquí.