c#에서 new는 단순히 객체를 생성하는 데만 쓰이지 않는다.
new 키워드는 상황에 따라 크게 세 가지 용도로 사용된다.
- 인스턴스를 생성하는 new 연산자
- 클래스에서 멤버를 숨기는 new 한정자
- 제네릭의 new 제약조건
1. new 연산자
new의 가장 일반적인 사용 방법은 객체(인스턴스)를 생성할 때 사용해서 생성자를 호출하는 것이다.
Player player = new Player(); // player 객체 생성
int[] arr = new int[10]; // arr 객체 생성
- 클래스, 배열, 구조체, 컬렉션, 등 다양한 객체를 생성하고, 초기화 할 수 있다.
- new를 통해 힙 영역에 메모리를 할당하거나 초기화를 수행
- 구조체는 new 없이도 생성할 수 있지만, new를 사용해 필드값을 초기화 할 수 있다.
2. new 한정자
new는 상속 관계에서 부모 클래스의 멤버를 자식 클래스에서 숨길 때 사용할 수 있다.
public class Animal
{
public void Move() {Console.WriteLine("걷기")};
}
public class Dog : Animal
{
new public void Move() {Console.WriteLine("네 발 걷기")};
}
- 이 경우 Dog 의 Move()는 Animal 의 Move()를 오버라이드 한 게 아니다.
- 부모 타입으로 캐스팅하면 Animal 의 Move() 출력
3. new 제약 조건
new는 제네릭 타입에서 매개타입이 기본 생성자를 가지고 있어야 한다는 제약을 줄 때도 사용한다.
class Factory<T> where T : new()
{
public T GetNewItem()
{
return new T();
}
}
- 여기서 T는 public 형식의 기본 생성자를 반드시 가져야 한다.
[참고]
< Microsoft 공식 문서 >
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/operators/new-operator
new 연산자 - 형식의 새 인스턴스 만들기 및 초기화 - C# reference
C# new 연산자는 필요에 따라 형식의 새 인스턴스를 초기화하는 데 사용됩니다.
learn.microsoft.com
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/new-modifier
new 한정자 - C# reference
new 한정자 - C# 참조
learn.microsoft.com
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/new-constraint
new 제약 조건 - C# reference
new 제약 조건 - C# 참조
learn.microsoft.com
<제약조건에 대한 참고 블로그>
https://usingsystem.tistory.com/90
[C#] 제네릭 형식 제약 조건(Where)
목차 목차 제네릭 제약 조건 추가 제네릭 제약 조건 종류 new 제약 조건 notnull 제약 조건 unmanaged 제약 조건 기반 클래스 이름 제약 조건 인터페이스 이름 제약 조건 U 제약 조건 멀티 제약 조건
usingsystem.tistory.com
<참고하면 좋은 블로그>
[C# 기초] 토큰 (예약어, 식별자, 리터럴, 연산자, 구분자)
1. 토큰이란 토큰이란 문법적으로 더 이상 나누어질 수 없는 요소를 말한다. 예를 들어, new object 라는 구를 생각해보자. 이 때 new 와 object는 나누어 쓰어도 각각이 가진 고유한 의미를 잃지 않는
killu.tistory.com
'Unity 개발 일지 > 코딩 공부' 카테고리의 다른 글
Mathf 클래스 (0) | 2025.05.01 |
---|---|
델리게이트(delegate) (0) | 2025.04.30 |
열거형 (Enum) (0) | 2025.04.15 |
프로퍼티와 getter/setter 메서드 (0) | 2025.04.11 |
유니티에서 데이터를 저장하는 방법 (0) | 2025.04.10 |