2010-04-23 13 views

Respuesta

16

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.

Cuestiones relacionadas