인터페이스는 특정한 클래스를 만들 때 사용하는 규약이다. IComparable 인터페이스를 상속받은 클래스는 반드시 CompareTo() 메서드를 구현하여야 한다는 규약을 가지고 있다.
아래와 같은 클래스가 있다.
class Person : IComparable
{
public int Id { get; set; }
public string Name { get; set; }
public Person(int id, string name)
{
Id = id;
Name = name;
}
}
class Program
{
static void Main(string[] args)
{
List<Person> list = new List<Person>()
{
new Person(10,"jeong"),
new Person(20,"park"),
new Person(30,"choi"),
new Person(15,"kim")
};
list.Sort();
foreach (var item in list)
{
Console.WriteLine(item.ToString());
}
}
}
Person이라는 자료형을 리스트에 넣고 정렬을 시키고자 하니 오류가 발생하였다. 두개의 자료형 중 어느 자료형을 기준으로 정렬을 할지 모르기 때문이다. 그래서 다음과 같이 Person클래스를 수정하여 준다.
class Person : IComparable
{
public int Id { get; set; }
public string Name { get; set; }
public Person(int id, string name)
{
Id = id;
Name = name;
}
public int CompareTo(object obj )
{
Person person = obj as Person;
return this.Id.CompareTo(person.Id);
}
}