La dérogation modifie et doit être utilisé pour les méthodes abstraites. Ceci indique pour la comp d'une méthode. Même si la méthode est appelée sur une référence à la classe de base, elle utilisera l'implémentation l'implémentation qui la remplace.
public class Base
{
public virtual void DoIt()
{
}
}
public class Derived : Base
{
public override void DoIt()
{
}
}
Base b = new Derived();
b.DoIt(); // Calls Derived.DoIt
appellera Derived.DoIt
si cela l'emporte sur Base.DoIt
.
Le nouveau modificateur indique au compilateur d'utiliser l'implémentation de votre classe enfant au lieu de l'implémentation de la classe mère de la classe mère. Tout code qui n'est pas référençant votre classe mais la classe utilisera l'implémentation de la classe parentale de la classe parente.
public class Base
{
public virtual void DoIt()
{
}
}
public class Derived : Base
{
public new void DoIt()
{
}
}
Base b = new Derived();
Derived d = new Derived();
b.DoIt(); // Calls Base.DoIt
d.DoIt(); // Calls Derived.DoIt
Premier appel Base.DoIt
alors Derived.DoIt
. Il s'agit en fait de deux méthodes entièrement distinctes qui portent le même nom, plutôt que d'une méthode dérivée qui surcharge la méthode de base.
Fuente: Blog de Microsoft
3 votes
Duplication de nombreuses questions, y compris stackoverflow.com/questions/159978/