메서드 서명의 "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과 One을 모두 재정의합니다. 메서드(new 사용) 및 Two 메서드(override 사용). One에 대해 new를 사용함으로써 클래스 B는 상속된 구현을 숨기고 자체 구현을 도입합니다. 그러나 Override for Two를 사용하면 상속된 가상 메서드를 재정의합니다.
따라서 new 키워드는 재정의가 적용되지 않는 경우와 같이 상속된 메서드를 재정의하거나 숨길 수 있도록 허용하여 유연성을 제공합니다. 가상 및 정적 방법.
위 내용은 C# 메서드 시그니처에서 'new' 키워드는 무엇을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!