본문 바로가기

프로그래밍/C# 프로그래밍

제너릭 클래스의 조건지정 - Where

제약 조건은 컨텍스트 키워드 where를 사용하여 지정한다.


제약 조건

설명

where T: struct

형식 인수가 값 형식이어야 한다. int, float 등

where T : class

형식 인수가 참조 형식이어야 한다.. 이는 모든 클래스, 인터페이스, 대리자 또는 배열 형식에도 적용

where T : new()

형식 인수가 매개 변수 없는 공용 생성자를 가지고 있어야 합니다. 다른 제약 조건과 함께 사용하는 경우 new() 제약 조건은 마지막에 지정

public class MyGenericClass<T> where T : IComparable, new() { T item = new T(); }

where T : <클래스 이름>

형식 인수가 지정된 기본 클래스이거나 이를 상속받은 클래스이어야 한다

where T : <인터페이스 이름>

형식 인수가 지정된 인터페이스이거나 지정된 인터페이스를 구현해야 한다. 여러 인터페이스 제약 조건을 지정할 수 있으며 제한하는 인터페이스는 제네릭이 될 수도 있음

where T : U

T에 대해 지정한 형식 인수가 U에 대해 지정한 인수이거나 이 인수에서 상속받아야 한다

또한 매개변수가 여러개일 경우, 각각 지정할 수 있다.


interface IMyInterface
{
}

class Dictionary<TKey, TVal>
    where TKey : IComparable, IEnumerable
    where TVal : IMyInterface
{
    public void Add(TKey key, TVal val)
    {
    }
}