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
Patricia Arquetteoriginal
2025-01-03 02:17:39658parcourir

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"};
}

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

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!

Déclaration:
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