Contents
접기
728x90
제네릭이란?
여러 타입에 대해 재사용 가능한 코드를 작성하는 문법
즉, 자료형을 미리 정하지 않고 나중에 정할 수 있는 방법이다. 특히 풀링 시스템 같은 데서 쓰인다.
public class Box<T>
{
public T item;
}
- Box<int>, Box<string> 등 어떤 타입이든 활용 가능하다.
- T는 타입 매개변수로, 나중에 실제 타입으로 바뀜
📝 예시
Box<int> intBox = new Box<int>();
intBox.item = 10;
Box<string> strBox = new Box<string>();
strBox.item = "hello";
제약 조건 (where)
특정 타입만 사용하도록 조건을 걸 수 있다
// T는 반드시 클래스여야 함
public class Storage<T> where T : class
// T는 MonoBehaviour이면서 IPoolable 인터페이스를 구현해야 함
public class ObjectPool<T> where T : MonoBehaviour, IPoolable
// T는 매개변수 없는 생성자가 필요함
public class Factory<T> where T : new()
풀링 시스템 구현 시, 제약 조건을 걸면 오류 방지 + 타입 안전성 확보가 가능하다.
메서드에도 제네릭 사용 가능
public void PrintItem<T>(T item)
{
Debug.Log(item.ToString());
}
호출예시:
PrintItem<int>(123);
PrintItem<string>("hello");
Unity에서 자주 쓰는 제네릭
구조 | 설명 |
List<T> | 다양한 타입의 리스트 처리 |
GetComponent<T>() | 원하는 타입의 컴포넌트 가져오기 |
Instantiate<T>() | 프리팹을 타입 안전하게 생성 |
ObjectPool<T> | 풀링 시스템에 제네릭 적용 가능 |
📖 요약
기능 | 설명 |
T | 타입 파라미터 (보통 T, U, V 등) |
where | 타입 제약 조건 지정 |
new() | 매개변수 없는 생성자 필요 |
class, struct | 참조형 / 값형 제한 |
재사용성 | 코드 중복 없이 다양한 타입 대응 가능 |
728x90
'C# > 데이터다루기' 카테고리의 다른 글
[C#] C#에서 new()만 써도 된다? (0) | 2025.05.20 |
---|---|
[C#] 열거형(enum) (0) | 2025.04.24 |
[C#] 문자열 처리 기능 및 메서드 (0) | 2025.04.14 |
[C#] 리터럴(literal) (0) | 2025.04.14 |
[C#] Escape Sequence (0) | 2025.04.14 |