Unity Chapter 8-6. C# 프로그래밍 [고급] : 제네릭

Date:     Updated:

카테고리:

태그:

인프런에 있는 이제민님의 레트로의 유니티 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);
      • Tint가 대입되며 매개변수의 자료형 타입을 int로 받았다.
    • Print<string>(“Hello”);
      • Tstring이 대입되며 매개변수의 자료형 타입을 string으로 받았다.


제네릭 클래스

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# 문법도 존재하지만 강의에서는 다루지 않았다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기


Unity Lesson 1 카테고리 내 다른 글 보러가기

댓글 남기기