[C# 2.0] 제네릭(Generic) 제약 조건

eunjin lee·2022년 7월 26일
0

C# 9.0 프로그래밍

목록 보기
19/50

제네릭을 쓰다 보면 형식매개변수로 받아들이는 타입이 특정 조건을 만족해야할 때가 있다. 이 때 알맞게 제약 조건을 걸어주어야 한다.


  1. 형식 매개변수에 대한 제약 조건
  • 모든 타입 T가 CompareTo를 가지고 있지 않기 때문에, CompareTo를 T에게 적용하려고 하면 컴파일 오류가 발생한다.
    ✍ 샘플 코드
        static T getMax<T>(T item1, T item2)
        {
            if(item1.CompareTo(item2) >= 0) //컴파일 에러
            {
                return item1;
            }
            return item2;
        }
  • 【where 형식매개변수 : 제약조건】의 형태로 조건을 제한한다.
    ✍ 샘플 코드
        static T getMax<T>(T item1, T item2) where T : IComparable
        {
            if(item1.CompareTo(item2) >= 0)
            {
                return item1;
            }
            return item2;
        }
  1. 특별한 제약 조건
  • 【where T: struct】: 값 형식만 가능하다.
  • 【where T: class】: 참조 형식만 가능하다.
  • 【where T: new()】: 기본 생성자가 정의돼 있어야 한다.
  • 【where T: class】: 참조 형식만 가능하다.

0개의 댓글