제네릭: 여러가지 타입을 한방에 대응
상황: 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 |
댓글