コードのリファクタリング中に、異常なメソッド シグネチャが出現しました:
private static new MyObject CreateSomething() { return new MyObject{"Something New"}; }
質問: このメソッド シグネチャの新しいキーワードの重要性は何ですか? C# 3.0で導入された機能ですか?オーバーライドとの違いは何ですか?
答え:
メソッド シグネチャの新しいキーワードは、オーバーライドとは異なる目的を果たします。 Microsoft の MSDN ドキュメントによると、継承されたメンバーを非表示にすることができます。
違いを示す例:
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
この例では、One メソッドでオーバーライドを使用して、その実装をオーバーライドします。一方、new は Two メソッドで使用され、A から継承された実装を非表示にします。
Key違い:
オーバーライドは、仮想メソッドまたは抽象メソッドを変更して、派生クラスにさまざまな実装を提供します。対照的に、 new は仮想と非仮想の両方の継承されたメンバーを非表示にし、派生クラスで新しい実装を提供できるようにします。
以上がC# メソッド署名における「new」キーワードは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。