new는 인스턴스를 생성하는 데 쓰이는 경우가 제일 익숙하리라 생각이 된다.
하지만 new 키워드는 생각보다 다양한 역할을 한다.
- new 연산자 (생성자 호출)
- new 제약조건 (제너릭 클래스 where절)
- new 한정자 (상속된 멤버)
이 글에선 new 한정자에 대해 알아보자.
| new 한정자를 알게되는 경위
The keyword new is required on 'DerivedC.x' because it hides inherited member 'BaseC.x'.
보통 파생된 클래스에서 같은 이름의 멤버를 지정하다 알게 될 확률 58,000%다.
물론 new 한정자가 없어도 경고 메시지를 낼 뿐, 기본 클래스의 멤버를 숨기는 것으로 동작한다.
| new 한정자 사용법
public class BaseC
{
public int x;
public void Invoke() { }
}
public class DerivedC : BaseC
{
new public void Invoke() { }
}
숨기고 싶은 멤버 (property, field, method, indexer, const) 앞에 new 한정자를 기입해주면 된다.
한 가지 유의사항이 있다면, override 한정자와는 동시에 사용할 수 없다.
| 참고
반응형
'Workspace > C#' 카테고리의 다른 글
[C# 7.0] 출력(out) 변수 선언 (0) | 2023.04.17 |
---|---|
[C# 7.0] 로컬 함수 (0) | 2023.04.17 |
[C#] partial 키워드 (0) | 2023.04.06 |
[C# 7] Tuple (0) | 2023.04.06 |
[C#] .NET Framework에 대응되는 버전 (0) | 2023.04.06 |