본문 바로가기
C#

[C#] 일반화 (Generic)

by GGolDDuKi 2023. 8. 23.

코드를 작성하다 보면 다음과 같이 타입은 다르지만 형식이 같은 경우를 다루게 된다.

class IntArray
{
    int[] arr = new int[5];
}
class FloatArray
{
    float[] arr = new float[5];
}

하지만 타입이 많아질 경우 코드가 비효율적이게 되는데,

 

이러한 경우에 다음과 같이 타입을 일반화(Generic)하면 된다.

class MyArray<T>
{
    T[] arr = new T[5];
}
public void Swap<T>(ref T a, ref T b)
{
    T temp;
    temp = a;
    a = b;
    b = temp;
}

위와 같이 일반화를 위해서는 클래스명 또는 메소드명 우측에 <T>와 같이 형식 인수를 추가해주면 된다.

제네릭 클래스/메소드를 호출할 때에는 형식 인수 T에 원하는 인수를 전달하면 된다.

 

추가적으로 C#의 경우,

제네릭 타입에 추가적인 조건을 설정해줄 수 있다.

class MyArray<T> where T : Player
{
    T[] arr = new T[5];
}

위와 같이 조건을 설정하면, T는 Player 혹은 Player를 상속받은 클래스여야 한다.

이처럼 조건을 설정하게 되면 실수로 인자를 잘못 넣는 경우를 어느 정도 규제가 가능해진다.


Reference - Microsoft Learn, Rookiss님의 게임 개발 시리즈

반응형

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

[C#] 프로퍼티 (Property) get, set  (0) 2023.08.30
[C#] 인터페이스 (Interface)  (0) 2023.08.24
싱글톤(Singleton) 패턴  (0) 2023.08.23

댓글