코드를 리팩토링하는 동안 특이한 메서드 서명이 나타났습니다.
private static new MyObject CreateSomething() { return new MyObject{"Something New"}; }
질문: 이 메소드 시그니처에서 new 키워드의 의미는 무엇인가요? C# 3.0에 도입된 기능인가요? override와 어떻게 다릅니까?
답변:
메서드 시그니처의 new 키워드는 override와는 다른 용도로 사용됩니다. 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
이 예에서는 Override가 One 메서드에서 사용되어 해당 구현을 재정의합니다. 기본 클래스 A. 반면에 A에서 상속된 구현을 숨기기 위해 Two 메서드에서 new를 사용합니다.
Key 차이점:
override는 가상 또는 추상 메서드를 수정하여 파생 클래스에서 다양한 구현을 제공합니다. 이와 대조적으로 new는 가상 및 비가상 모두에서 상속된 멤버를 숨기므로 파생 클래스에서 새로운 구현을 제공할 수 있습니다.
위 내용은 C# 메서드 서명에서 `new` 키워드는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!