Aplica las reglas de "mejor conversión" (7.4.3.3 de la especificación C# 3) como parte de la resolución de sobrecarga (sección 7.4.3 en general).
Básicamente en este caso hay una conversión de string
a , pero no de object
a string
. Siguiendo las reglas, eso significa que la conversión de null
a string
es mejor que la de null
a object
, por lo que se usa la sobrecarga con el parámetro string
.
resolución de sobrecarga puede llegar a ser extremadamente complicado cuando los siguientes factores se involucran:
- Podría haber métodos genéricos en el conjunto de candidatos
- Si hay son métodos genéricos, la inferencia de tipos se aplica a cada uno de por separado, dando diferentes oportunidades de conversión
- Si los argumentos son grupos de métodos, se podrían convertir a diferentes tipos de delegados, posiblemente incluso utilizando diferentes firmas de métodos si el grupo de métodos con nombre als O tiene varias sobrecargas
- La herencia puede conducir a resultados sorprendentes
- Las matrices de parámetros (
params
) añadir a la diversión
- parámetros opcionales en C# 4 contribuyen a la decisión demasiado
Básicamente sobrecarga puede ser una lata de gusanos real: cuando sea posible, diseñe las sobrecargas para que solo una de ellas sea un objetivo válido de una llamada a método determinada, de modo que no tenga que preocuparse por las reglas detalladas.