낑깡의 게임 프로그래밍 도전기

c# 제네릭(Generic) 본문

C#

c# 제네릭(Generic)

낑깡겜플밍 2025. 7. 27. 01:09
반응형

제네릭은 일반화 프로그래밍이라고도한다.

List<string> strings = new List<string>();
List<int> ints = new List<int>();

위와 같이 동적으로 자료형을 할달할 수 있는 것을 제네릭이라고 할 수 있다.

활용
제네릭 메서드도 만들 수 있었다. 예를 들면 T라는 타입을 써서 어떤 자료형이 들어오든 동작하게 만들 수 있었다. 예를 들면 이런 식이다.

처음엔 특정 타입의 Actor 목록을 가져오려고 할 때, List<ActorBase>를 순회하면서 원하는 타입만 따로 골라내야 했다.
그런데 이걸 매번 캐스팅하고 검사하려면 코드도 중복되고 귀찮았다.

그래서 제네릭을 써서 재사용 가능한 메서드로 만들게 됐다.

Public List<T> GetActors<T>() where T : ActorBase //T 는 ActorBase를 상속 받은 애들만 쓸수 있다는 뜻
{
	foreach (ActorBase actorBase in actorBases)
    {
    	T actor = actorBase as T;
        if(actor != null)
        	actor.Add(actor);
    }
	return actors;
}

이렇게 하면 T는 반드시 ActorBase를 상속받은 클래스여야만 쓸 수 있었다.
이 제약 조건 덕분에 actorBase as T 캐스팅도 안정적으로 쓸 수 있었고, 컴파일러가 타입을 보장해준다.

 

클래스로도 만들 수 있다.

 

반응형

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

C# 리플렉션  (0) 2025.07.29
C# 비동기(Thread, aysnc await)  (1) 2025.07.28
C# 링큐(Linq)  (3) 2025.07.26
C# 람다식(Lamba)  (0) 2025.07.25
C# 서브클래스, 인터페이스, 추상클래스  (1) 2025.07.24