제네릭을 쓰다 보면 형식매개변수로 받아들이는 타입이 특정 조건을 만족해야할 때가 있다. 이 때 알맞게 제약 조건을 걸어주어야 한다.
static T getMax<T>(T item1, T item2)
{
if(item1.CompareTo(item2) >= 0) //컴파일 에러
{
return item1;
}
return item2;
}
static T getMax<T>(T item1, T item2) where T : IComparable
{
if(item1.CompareTo(item2) >= 0)
{
return item1;
}
return item2;
}