メソッド シグネチャの "new" キーワードについて
コードのリファクタリング中に、開発者が誤って新しいキーワードをメソッド シグネチャに導入してしまいました。
private static new MyObject CreateSomething() { return new MyObject{"Something New"}; }
これは C# で有効にコンパイルされますが、その重要性について疑問が生じます。メソッド シグネチャの new キーワード。
「new」キーワードは何を意味しますか?
MSDN ドキュメントで説明されているように、メソッド シグネチャの new キーワードはその参照を変更します。動作:
例:
次のコードを考えてみましょう:
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 サイトの他の関連記事を参照してください。