IComparer<br>인터페이스 Linq 비교 인터페이스

6118 단어 compare
IComparer에서 두 객체를 비교하고 값을 반환하여 객체가 다른 객체보다 작거나 같거나 크거나 작음을 나타냅니다.
Linq에서 많은 확장 방법은 IComparer 인터페이스를 실현하는 실례적인 대상을 매개 변수로 받아들이기 때문에 Linq에서 여러 가지 방법의 IComparer comparer 매개 변수의 의미를 이해하려면 먼저 이 인터페이스에 대한 인식을 가져야 한다.
이 인터페이스에는 구성원 메서드가 하나만 있습니다.
CompareTo는 현재 객체와 동일한 유형의 다른 객체를 비교합니다.
이 인터페이스는 값을 정렬할 수 있는 형식으로 이루어진다.예를 들어 수치나 문자열 클래스입니다.값 유형 또는 클래스 구현 CompareTo(T) 방법을 사용하여 정렬 등의 목적에 적합한 유형별 비교 방법을 만듭니다.
의미
0보다 작음 두 번째 객체 첫 번째 객체 보다 작음
제로 두 대상은 같다
0보다 큽니다. 첫 번째 객체가 두 번째 객체보다 큽니다.
순서를 외워야 하니 기분이 나쁘다.그렇다는 뜻이야.두 개의 매개 변수를 입력하고, 0보다 크면 첫 번째 매개 변수가 크고, 0보다 작으면 첫 번째 매개 변수가 작다.이렇게 간단해, 기억해.
그러나 Linq 확장 방법의 매개 변수에서 기본값은 0보다 작은 줄이 앞에 있는 것입니다. 큰 줄이 앞에 있는지, 작은 줄이 앞에 있는지, 0보다 작은 값이 앞에 있는지 생각하면 됩니다.
class Program
    {
        static void Main(string[] args)
        {
            People p1 = new People(1, " ", 23);
            People p2 = new People(1, " ", 22);
            People p3 = new People(1, " ", 21);
            List<People> listP = new List<People>();
            listP.Add(p1);
            listP.Add(p2);
            listP.Add(p3);
            compares c = new compares();
            IEnumerable<People> items = listP.OrderBy(p => p, c);
            foreach (People p in items)
            {
                Console.WriteLine(p.Name);  // 
            }

            Console.ReadKey();
        }
    }

    public class compares : IComparer<People>
    {
        public int Compare(People p1, People p2)
        {
            if (p1.Age > p2.Age)
            {
                return 1;
            }
            else if (p1.Age == p2.Age)
            {
                return 0;
            }
            else
            {
                return -1;
            }
        }
    }

    public class People
    {
        public People(int id, string name, int age)
        {
            this.Id = id;
            this.Name = name;
            this.Age = age;
        }

        public int Id
        {
            get;
            set;
        }

        public string Name
        {
            get;
            set;
        }

        public int Age
        {
            get;
            set;
        }
    }

좋은 웹페이지 즐겨찾기