¡Soy un recién llegado al desbordamiento de la pila, así que por favor vaya tranquilo conmigo! Estoy leyendo C# en profundidad, pero me encontré con un escenario que no creo que esté cubierto. Una búsqueda rápida en la web tampoco arrojó ningún resultado.Escriba la inferencia para los argumentos de tipo de los métodos genéricos
Di defino los siguientes métodos sobrecargados:
void AreEqual<T>(T expected, T actual)
void AreEqual(object expected, object actual)
Si llamo AreEqual()
sin especificar un argumento de tipo:
AreEqual("Hello", "Hello")
es la versión genérica o no genérico del método invocado? ¿Se invoca el método genérico con el argumento de tipo inferido, o se invoca el método no genérico con los argumentos del método implícitos en System.Object
?
Espero que mi pregunta sea clara. Gracias de antemano por cualquier consejo.
por supuesto, puede escribir un código simple para comprobar esto ... –
http://blogs.msdn.com/b/ericlippert/archive/2009/07/30/generics-are-not-templates.aspx –
@Mitch Wheat - cierto, pero entonces no tendría que hacer mi primera publicación. Y es útil para que otros vean la respuesta aquí. – zekesteer