본문 바로가기
C#

제네릭

by imagineer_jinny 2021. 7. 21.

제네릭: 여러가지 타입을 한방에 대응

 

상황: Print 함수를 숫자 뿐만 아니라 문장이나 다른 타입에 대해서도 끼우고 싶다.

이때 오버로딩을 사용하거나 별개의 이름을 가진 함수를 만들어서 여러가지 파생형을 직접 만들 수 있음.

이럴 때 제네릭을 만들어서 여러가지 타입을 한방에 대응할 수 있음

 

제네릭의 서식은 함수 이름 다음에 < >를 사용해서 가상의 타입의 이름을 아무렇게나 지어줌 

<MyType> <JieunType> 등등 다 가능. 근데 보통 <T> 라고 많이 씀.

그 다음 T 형태의 타입을 받는다고 명시하면 됨

이렇게 하면 Print 함수가 T 타입에 맞춰서 발동됨

 

<>안에 사용하고 싶은 타입을 명시하면 Print 함수가 그 타입에 맞춰서 발동을 시킴

 

유니티에서 자주 쓰던 거:

<>안의 타입에 대해서 어떤 컴포넌트를 맞추어 발동시킬지를 명시할 수 있었음

Rigidbody를 넣으면 Rigidbody로써 GetComponent를 발동했음. 

 

제네릭은 함수 뿐만 아니라 클래스에 대해서도 사용할 수 있음

 

컨테이너라는 클래스는 메시지 데이터들을 가지고 있는 단순한 데이터 컨테이너.

게임이 시작되었을 때 컨테이너를 새로 만들어주고 

컨테이너에 메시지들에게 새로운 스트링 배열 3칸짜리를 할당해줌.

 

근데 이때 컨테이너 클래스는 문장 형태에 대해서만 활용할 수 있음. 

스트링 뿐만 아니라 다양한 타입에 대응시키고 싶다면? 제네릭 사용!

그 다음 이런식으로 지정해주면 됨

 

'C#' 카테고리의 다른 글

레이캐스트(Raycast)  (0) 2021.07.23
액션 + 람다 함수  (0) 2021.07.21
이벤트  (0) 2021.07.21
델리게이트  (0) 2021.07.20
유니티 이벤트  (0) 2021.07.20

댓글