ホームページ >バックエンド開発 >C++ >C# メソッド シグネチャにおける「new」キーワードは何をしますか?

C# メソッド シグネチャにおける「new」キーワードは何をしますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-02 18:54:38752ブラウズ

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

メソッド シグネチャの "new" キーワードについて

コードのリファクタリング中に、開発者が誤って新しいキーワードをメソッド シグネチャに導入してしまいました。

private static new MyObject CreateSomething()
{
  return new MyObject{"Something New"};
}

これは C# で有効にコンパイルされますが、その重要性について疑問が生じます。メソッド シグネチャの new キーワード。

「new」キーワードは何を意味しますか?

MSDN ドキュメントで説明されているように、メソッド シグネチャの new キーワードはその参照を変更します。動作:

  1. 継承されたメソッドを非表示にします: 派生クラスで使用される場合、 new キーワードは、メソッドの継承された実装が再利用されるのを防ぎます。代わりに、派生クラスのメソッドは完全に新しいメソッドとして扱われます。
  2. 非仮想メソッドと静的メソッドをオーバーライドします: 仮想メソッドのみをオーバーライドできる override キーワードとは異なり、新しいキーワードを使用すると、ベース内の非仮想メソッドや静的メソッドさえもオーバーライドできますclass.

例:

次のコードを考えてみましょう:

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

この例では、クラス B は One とメソッド (new を使用) と Two メソッド (オーバーライドを使用)。 new for One を使用することで、クラス B は継承された実装を隠し、独自の実装を導入します。ただし、override for Two を使用すると、継承された仮想メソッドがオーバーライドされます。

したがって、新しいキーワードは、オーバーライドが適用できない場合など、継承されたメソッドをオーバーライドしたり非表示にしたりできるようにすることで、柔軟性を提供します。仮想メソッドと静的メソッド。

以上がC# メソッド シグネチャにおける「new」キーワードは何をしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。