C# \ Unity

C#에서 람다식 사용하기 (특히 Sort)

HYuk 2022. 12. 19. 16:14
728x90

C++의 경우

sort(a.begin(), b.end(), [&](int a, int b){

return a>b;

});

위와 같이 람다식을 사용하여 Sort를 자주 표현한다.

(위의 경우에 내림차순 -> 10, 9, 8 ... )

 

C#에서는 람다식은 좀더 간단하지만

( (매개변수)=>{함수정의} 의 형태 )

return 이 bool이 아닌 int를 반환하게 된다.

 

그렇다면 어떻게 정렬을 할까?

C#은 -1을 return 할 경우 그대로

1을 return 할 경우 순서를 바꾼다 생각하면 된다.

 

예를들어

List.Sort( (a, b) =>

{

if(a>b)

return -1;

else

return 1;

});

 

의 경우 a>b 일 때, 순서를 안바꾼다하면, 내림차순 (즉, 앞쪽이 큰 수) 가 된다.

 

이는 ICompare에 기반하여 그런 것 인데,

 

Compare()가 호출되었을 때 x가 y보다 작으면 음수를 반환, 같으면 0 반환, x가 y보다 크면 양수를 반환하는 메서드를 가진다. (오름차순)

 

 

728x90

'C# \ Unity' 카테고리의 다른 글

코루틴 NullReferenceException 오류  (1) 2022.12.29
C# ?? 연산자 (물음표 2개)  (1) 2022.11.01