Maison >développement back-end >C++ >Que fait le « nouveau » mot-clé dans les signatures de méthodes C# ?
Comprendre le "nouveau" mot-clé dans les signatures de méthode
Lors d'une refactorisation de code, un développeur a introduit par erreur un nouveau mot-clé dans une signature de méthode :
private static new MyObject CreateSomething() { return new MyObject{"Something New"}; }
Ceci compile validement en C#, soulevant des questions sur la signification du nouveau mot-clé dans la méthode signatures.
Que signifie le mot-clé "new" ?
Comme mentionné dans la documentation MSDN, le mot-clé new dans une signature de méthode modifie son comportement de référencement :
Exemple :
Considérons le code suivant :
public class A { public virtual void One(); public static void Two(); } public class B : A { public new void One(); public override void Two(); } B b = new B(); A a = b as A; a.One(); // Calls implementation in B a.Two(); // Calls implementation in A b.One(); // Calls implementation in B b.Two(); // Calls implementation in B
Dans cet exemple, la classe B redéfinit à la fois la classe One (en utilisant new) et la méthode Two (en utilisant override). En utilisant new pour One, la classe B masque l'implémentation héritée et introduit la sienne. Cependant, en utilisant override pour Two, il remplace la méthode virtuelle héritée.
Par conséquent, le nouveau mot-clé offre de la flexibilité en permettant aux méthodes héritées d'être remplacées ou masquées dans les cas où la substitution n'est pas applicable, comme pour les non- méthodes virtuelles et statiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!