Pregunta

ligeramente diferente varianza pregunta sobre este tiempo.

Lo tomo de la experimentación que C # no permite reemplazar una función virtual con una función contravariant? Si lo hace, hacerlo cómo lo hace, ya que pone "sobrecarga método adecuado no se encuentra." Si no lo es, ¿por qué no? si está previsto por la clase base que el valor en será siempre un int, y la sub-clase puede tomar un objeto, dónde está el problema?

Lo mismo para volver tipos, debe ser covariante en su firma overrride

¿Qué idiomas le permiten hacer esto? (C ++ / Java Busco a usted) y si le permiten utilizar, qué tipos varianza? (Tipo de retorno / lista de argumentos, etc.)

Podría tener múltiples sustituciones? No veo por qué no, siempre y cuando las firmas eran técnicamente único.

¿Por qué C # / CLR no ayuda método de reemplazo co / contra-varianza?

Me lee esto y no veo ninguna respuesta a cualquiera de las preguntas. Yo sé de varianza genérica, y sé que es impresionante. Quiero saber sobre el método de firma varianza, y no sólo en C #, pero también en C # (es decir. Incluyendo, pero no limitado a). Si no existe me gustaría una confirmación de esto y una explicación (¿es un detalle de implementación? Es mi teoría tipo equivocado? ¿Es sólo el CLR / C # pasa a no soporta esta característica en particular? ¿Es algo que no he t pensado ya que no tiene que ver con la implementación del CLR, y por lo tanto no saben los detalles complejos específicos?)

¿Fue útil?

Solución

Encontrados la respuesta, sección 10.6.4 en los estados C # especificación que anulaciones deben tener la misma firma

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top