Maison > développement back-end > C++ > Que signifie le mot clé « nouveau » dans une signature de méthode C# ?

Que signifie le mot clé « nouveau » dans une signature de méthode C# ?

Patricia Arquette
Libérer: 2025-01-03 02:17:39
original
638 Les gens l'ont consulté

What Does the `new` Keyword Mean in a C# Method Signature?

Comprendre le nouveau mot clé dans les signatures de méthode

Lors de la refactorisation du code, une signature de méthode inhabituelle est apparue :

private static new MyObject CreateSomething()
{
  return new MyObject{"Something New"};
}
Copier après la connexion

Question : Quelle est la signification du mot-clé new dans cette signature de méthode ? Est-ce une fonctionnalité introduite dans C# 3.0 ? En quoi diffère-t-il du remplacement ?

Réponse :

Le nouveau mot-clé dans une signature de méthode a un objectif distinct du remplacement. Selon la documentation MSDN de Microsoft, il permet de masquer les membres hérités.

Un exemple illustrant la différence :

public class A
{
   public virtual void One();
   public void Two();
}

public class B : A
{
   public override void One();
   public new 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, override est utilisé sur la méthode One pour remplacer son implémentation dans la classe de base A. D'autre part, new est utilisé sur la méthode Two pour masquer l'implémentation héritée de A.

Clé Différence :

override modifie les méthodes virtuelles ou abstraites pour fournir différentes implémentations dans les classes dérivées. En revanche, new masque les membres hérités, à la fois virtuels et non virtuels, permettant ainsi de fournir de nouvelles implémentations dans les classes dérivées.

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