C#
[C#] IComparable과 IComparer
소리쿤
2023. 3. 26. 02:21
public class Number : IComparable<Number>
{
public int value = 0;
public Number(int num)
{
this.value = num;
}
public int CompareTo(Number? other)
{
if (this.value > other.value)
{
return 1;
}
else if (this.value < other.value)
{
return -1;
}
else
{
return 0;
}
}
}
public class ReverseComparer : IComparer<Number>
{
public int Compare(Number? x, Number? y)
{
if (x.value > y.value)
{
return -1;
}
else if (x.value < y.value)
{
return 1;
}
else
{
return 0;
}
}
}
class Program
{
static List<Number> list = new List<Number>();
static void Main(string[] args)
{
for(int i = 0; i < 10; i++)
{
list.Add(new Number(i));
}
list.Sort();
list.ForEach(num => Console.WriteLine(num.value));
list.Sort(new ReverseComparer());
list.ForEach(num => Console.WriteLine(num.value));
}
}
설명할 건 따로 없음...
위 용법대로 쓰면 됨...
-1, 0, 1 리턴값이 좀 헷갈림
X < Y 인 경우에, -1이면 오름차순, 1이면 내림차순이다.