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이면 내림차순이다.
'C#' 카테고리의 다른 글
[C#] 공변성, 반공변성 (0) | 2023.04.04 |
---|---|
[C#] SpinLock 구현 (0) | 2023.03.29 |
[C#] Dispose 패턴 (0) | 2023.03.23 |
[C#] Interlocked (0) | 2023.03.20 |
[C#] 메모리 베리어 예제 (0) | 2023.03.06 |