1. Sort가 비교값을 해석하는 규칙
Sort는 비교 함수(a, b)가 반환한 값을 이렇게 해석합니다:
- 음수 (< 0) → a가 b보다 앞에 와야 함
- 0 → 순서 그대로
- 양수 (> 0) → a가 b보다 뒤에 와야 함
즉, 반환값은 항상 첫 번째 인자(a)의 위치 기준으로 해석됩니다.
비교함수는 a.CompareTo(b)일 때 a가 b보다 크면 양수, 작으면 음수를 반환합니다.
2. 오름차순 예시
(a, b) => a.CompareTo(b)
- a = 2, b = 5 → a.CompareTo(b) = -1 (음수)
→ a가 앞으로 (즉, 2가 5보다 앞) - a = 5, b = 2 → a.CompareTo(b) = 1 (양수)
→ a가 뒤로 (즉, 2가 앞으로)
3. 내림차순에서 b.CompareTo(a)
(a, b) => b.CompareTo(a)
- a = 2, b = 5 → b.CompareTo(a) = 5.CompareTo(2) = 1 (양수)
→ a가 뒤로 가야 함
→ 결과적으로 b(5)가 앞으로 옴 - a = 5, b = 2 → b.CompareTo(a) = 2.CompareTo(5) = -1 (음수)
→ a가 앞으로
→ 결과적으로 a(5)가 앞으로 유지됨
즉, 비교 기준을 (b.CompareTo(a))로 바꾸면, b가 크면 항상 "a를 뒤로" 보내게 되어
**큰 값(b)**이 앞쪽으로 오게 됩니다.
4. 한 줄 정리
Sort는 "첫 번째 인자(a)" 기준으로 판단하므로,
b.CompareTo(a)는 큰 값이 나오면 a를 뒤로 밀고 b를 앞으로 보내서 내림차순이 됩니다.
'C#' 카테고리의 다른 글
| [C#] 값 형식과 참조 형식의 저장 위치 (1) | 2025.08.10 |
|---|---|
| [C#] 자료구조 정리 표 (2) | 2025.08.10 |
| [C#] 구조체를 쓰는 이유 (1) | 2025.08.10 |
| [C#] Boxing과 UnBoxing (3) | 2025.07.25 |
| [C#] Garbage Collector (2) | 2025.07.25 |