오보에블로그

[C#API] Comparison<T> 본문

C++ & C#/C#

[C#API] Comparison<T>

(OBO) 2021. 12. 30. 20:43
728x90

Comparision<T>

  • 정렬 메소드중 오버로드 된것중에 하나로는 List<T>.Sort(Comparision<T>) 가 있다.
  • Comparision<T>delegate 로 정의된 대리자로, delegate int Comparison<in T>(T x, T y);
  • Comparison에는 xy를 받아서 xy 보다 작으면 0보다 작은 정수를, xy가 같으면 0을, xy 보다 크면 1 을 리턴해야하는 함수를 할당해야한다.
  • 이걸 쓰면 크고 작음의 기준을 커스텀하게 작성할 수 있어서 편리하다.

예시

public string[] solution(string[] strings, int n)
{
    List<string> stringList = new List<string>();
    stringList.AddRange(strings);

    stringList.Sort((x, y) =>
    {
        if (x[n] < y[n])
            return -1;
        else if (x[n] > y[n])
            return 1;
        else
        {
            int camparer = x.CompareTo(y);
            if (camparer < 0)
                return -1;
            else if (camparer == 0)
                return 0;
            else
                return 1;
        }
    }
    );

    return stringList.ToArray();
}

ComparisonAPI

728x90