Unity Chapter 8-6. C# 프로그래밍 [고급] : 제네릭
카테고리: Unity Lesson 1
태그: C Sharp Unity Game Engine
인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 😀
🌜 [레트로의 유니티 C# 게임 프로그래밍 에센스] 강의 들으러 가기!
Chapter 8. C# 프로그래밍 : 고급
🔔 제네릭
제네릭을 가져다 쓰는 경우는 많아도 직접 구현하는 경우는 잘 없다. 그래도 가볍게 배워보자.
- 동일한 함수로 매개변수나 리턴 타입을 다르게 하고 싶다면 오버로딩을 사용하여도 좋지만
제네릭
을 사용하면 여러가지 타입을 한방에 대응할 수 있다.
제네릭의 구현과 호출
public void Print<T>(T inputMessage)
{
Debug.Log(inputMessage);
}
void Start()
{
Print<int>(30);
Print<string>("Hello");
}
- 구현
<T>
꺽새 안에T
를 명시해준 후 제네릭 타입으로 할 부분들을T
로 대체해주면 된다.- 꼭
T
여야 할 필요는 없다. 가상의 타입을T
라고 부르기로 한 것일 뿐. 그러나 대체로T
를 많이 사용한다.
- 꼭
- public void Print<T>(T inputMessage)
- 이 함수는 매개변수 inputMessage의 자료형 타입을 다양하게 받을 수 있다.
- 호출
- Print<int>(30);
T
에int
가 대입되며 매개변수의 자료형 타입을 int로 받았다.
- Print<string>(“Hello”);
T
에string
이 대입되며 매개변수의 자료형 타입을 string으로 받았다.
- Print<int>(30);
제네릭 클래스
public class Container<T>
{
public T [] messages;
}
void Start()
{
Container<string> container = new Container<string>();
container.messages = new string[3];
container.messages[0] = "Hello";
container.messages[1] = "World";
container.messages[2] = "Generic";
for(int i = 0; i < container.messages.Length; i++)
{
Debug.Log(container.messages[i]);
}
}
제네릭 예시
- GetComponent<T>();
T
자리에 들어가는 타입의 컴포넌트 타입으로 오브젝트를 불러온다.- 제네릭 함수
- List
list = ... - string 타입의 List 만들기
- 제네릭 클래스
cf
T
의 타입 범위를 한정해주는 C# 문법도 존재하지만 강의에서는 다루지 않았다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기