Unity 개발 일지/코딩 공부

new 키워드

ohty20012 2025. 4. 18. 21:01

c#에서 new는 단순히 객체를 생성하는 데만 쓰이지 않는다.

new 키워드는 상황에 따라 크게 세 가지 용도로 사용된다.

  1. 인스턴스를 생성하는 new 연산자
  2. 클래스에서 멤버를 숨기는 new 한정자
  3. 제네릭의 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

 

<참고하면 좋은 블로그>

https://killu.tistory.com/21

 

[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