es posible marcar una declaración de método en una interfaz como "new" pero, ¿tiene algún sentido "técnico" o es solo una forma de indicar explícitamente que la declaración no puede anular una anterior?¿Cuál es el propósito de ocultar (usando el modificador "nuevo") una declaración de método de interfaz?
Por ejemplo:
interface II1
{
new void F();
}
interface II2 : II1
{
new void F();
}
es válido (el compilador de C# 4.0 no se queja), pero no parece ser diferente de:
interface II1
{
void F();
}
interface II2 : II1
{
void F();
}
Gracias de antemano por cualquier información.
EDIT: ¿Conoces un escenario donde esconderse en una interfaz sería útil?
EDIT: De acuerdo con este enlace: Is method hiding ever a good idea (gracias Scott), el escenario más común parece ser la emulación del tipo de retorno covariantes.
Gracias por su respuesta. Entonces, ¿no afectará la forma en que se pueden usar las interfaces? Editaré la publicación inicial para aclarar esto. – Pragmateek
@Serious: no, la única diferencia es la advertencia del compilador. Yo recomendaría usar la palabra clave 'new' para ser claro. Bueno, no, en realidad recomendaría no ocultar el método en general, ya que me parece confuso, pero si * es necesario *, use la palabra clave 'new'. –
Tiene razón, yo tampoco veo ningún caso de uso interesante donde debería ser necesario. – Pragmateek