[C#] 제네릭 ( Generics )

한재민·2025년 2월 21일

용어정리

목록 보기
13/33
post-thumbnail

제네릭은 클래스, 인터페이스, 메서드에서 데이터 타입을 일반화하여 다양한 타입을 처리할 수 있도록 한다.

컴파일 시점에서 타입이 결정되므로, 코드의 재사용성을 높이고 타입 안정성을 제공하는 기능이다.

제네릭 클래스

class Box<T>
{
    private T item;

    public void SetItem(T item)
    {
        this.item = item;
    }

    public T GetItem()
    {
        return item;
    }
}

제네릭 클래스를 사용하면 여러타입에 대응하는 클래스를 만들 수 있다.

제네릭 메서드

class Test
{
    public static void Print<T>(T data)
    {
        Console.WriteLine(data);
    }
}

제네릭 메서드는 특정 타입에 종속되지 않고 여러 타입을 지원할 수 있다.

제네릭 인터페이스

// 제네릭 인터페이스 정의
interface IStorage<T>
{
    void Add(T item);
    T Get(int index);
}

// 제네릭 인터페이스 구현
class Storage<T> : IStorage<T>
{
    private List<T> list = new List<T>();

    public void Add(T item)
    {
        list.Add(item);
    }

    public T Get(int index)
    {
        return list[index];
    }
}

인터페이스에서도 제네릭을 사용할 수 있다

제네릭 타입 제한

class Calculator<T> where T : struct
{
    private T number;

    public Calculator(T number)
    {
        this.number = number;
    }

    public T GetNumber()
    {
        return number;
    }
}
  • where T : struct
    값 타입만 허용
  • where T : class
    참조 타입만 허용
  • where T : new()
    기본 생성자가 있는 타입만 허용
  • where T : Number
    특정 클래스 또는 인터페이스를 상속받은 타입만 허용
profile
유니티 클라이언트 취업준비중입니다..

0개의 댓글