생활
c# 인터페이스 관련 질문입니다.
class PriorityQueue<T> where T : IComparable<T>
{
List<T> _heap = new List<T>();
public void Push(T data)
{
_heap.Add(data);
int now = _heap.Count - 1;
while(now > 0)
{
int next = (now - 1) / 2;
if (heap[now].CompareTo(heap[next]) < 0)
break;
T temp = _heap[now];
heap[now] = heap[next];
_heap[next] = temp;
now = next;
}
}
}
위 코드에서 heap[now].CompareTo(heap[next])처럼 CompareTo()를 사용하는 부분이 잘 이해가 안 됩니다. where T : IComparable<T> 는 상속받은 게 아니라 T의 속성을 제한한 것이지 않나요? 상속받은 게 아닌데 어떻게 위처럼 사용할 수 있는 건가요? 그리고 만약 상속받은 게 맞다고 하더라도 구현부를 따로 만들어줘야 하는 것 아닌가요? 잘 이해가 안 되네요ㅠ
아직 답변이 없어요.