>백엔드 개발 >C++ >C# 메서드 시그니처에서 'new' 키워드는 무엇을 합니까?

C# 메서드 시그니처에서 'new' 키워드는 무엇을 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-02 18:54:38721검색

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 키워드와 달리 new 키워드를 사용하면 기본에서 가상이 아닌 메서드와 정적 메서드까지 재정의할 수 있습니다. 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과 One을 모두 재정의합니다. 메서드(new 사용) 및 Two 메서드(override 사용). One에 대해 new를 사용함으로써 클래스 B는 상속된 구현을 숨기고 자체 구현을 도입합니다. 그러나 Override for Two를 사용하면 상속된 가상 메서드를 재정의합니다.

따라서 new 키워드는 재정의가 적용되지 않는 경우와 같이 상속된 메서드를 재정의하거나 숨길 수 있도록 허용하여 유연성을 제공합니다. 가상 및 정적 방법.

위 내용은 C# 메서드 시그니처에서 'new' 키워드는 무엇을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.