Maison > développement back-end > C++ > Que fait le « nouveau » mot-clé dans les signatures de méthodes C# ?

Que fait le « nouveau » mot-clé dans les signatures de méthodes C# ?

Mary-Kate Olsen
Libérer: 2025-01-02 18:54:38
original
741 Les gens l'ont consulté

What Does the `new` Keyword Do in C# Method Signatures?

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"};
}
Copier après la connexion

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 :

  1. Masque les méthodes héritées : Lorsqu'il est utilisé dans une classe dérivée, le mot-clé new empêche l'implémentation héritée d'une méthode d'être réutilisée. Au lieu de cela, la méthode de la classe dérivée est traitée comme une méthode complètement nouvelle.
  2. Remplace les méthodes non virtuelles et statiques : Contrairement au mot-clé override, qui ne peut remplacer que les méthodes virtuelles, le nouveau le mot-clé permet de remplacer les méthodes non virtuelles et même statiques dans la base class.

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal