[C#] Generic


제네릭(Generic)이란?

클래스를 사용할 타입을 클래스를 디자인할 때 지정하는 게 아니라 클래스를 사용할 때 지정한 후 사용하는 기술을 말한다.

제네릭을 흔히 형식 매개 변수라고 말한다.

비유하자면 ‘틀’이라고 설명할 수 있다.

한 클래스나 구조체는 사용자가 코딩한 형식으로만(정의된 형식으로만) 반환 형식이나 매개 변수의 형식이 결정되게 된다.

interface INonGenericInterface {
    Int32 Add(Int32 num);
    Int32 Sub(Int32 num);
    Int32 Mul(Int32 num);
    Int32 Div(Int32 num);
}

위에는 한 인터페이스의 예이다. 반환형과 자료형을 보면 Int32로 정해져 있는 것을 볼 수 있다.

만약 Int32 형식이 아닌 다른 형식으로 인터페이스를 만들고 싶다면 바로 제네릭을 쓰면 된다.

interface IGenericInterface<T> {
    T Add(T num);
    T Sub(T num);
    T Mul(T num);
    T Div(T num);
}

.NET에서 기본적으로 제공하는 클래스 중 제네릭을 사용하는 클래스는 ‘SYstem.Collections.Generic’에 정의되어 있다.

위의 예제를 보면 형식 이름 뒤에 <T>가 추가된 것을 확인할 수 있다. 이때 여기서 T는 형식 매개 변수를 의미한다.

라는 형식 매개 변수에는 말 그대로 '형식'을 매개 변수처럼 넘겨줘야 한다.

이 인터페이스를 사용하고 싶으면 다음과 같이 하면 된다.

IGenericInterface<Int32> int32GenericInterface;

형식<자료형> 식별이름;

제네릭을 정말 잘 표현한 그림이 있어서 가져왔다.

252EB03754E491602F