반응형
Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Do Something IT

c# IComparer 본문

OtherLanguage/C

c# IComparer

아낙시만더 2013. 12. 12. 13:08
반응형

참조 : 바로가기 


List에서는 프레임워크에 내장된 특별한 인터페이스를 통해 리스트에서 멤버를 정렬할   있는 별도의 클래스를 만들  있다.

 

IComparer인터페이스를 구현해 List 객체를 정렬하는 방법을 알려줄  있다.

이는 IComparer인터페이스에 있는 Compare()메소드를 구현하면 된다 메소드에서는  객체를 매개변수로 받고, int 반환한다.


IComparer 정렬할 때는  인터페이스를 구현하는 클래스의 인스턴스를 새로 만들어야 한다.

 객체는 List.Sort()에서 객체들을 정렬하는  도움을 주기 위한 용도로만 사용된다.

 

 

1
2
3
4
5
6
7
8
9
using System;
 
namespace Sort
{
    class Test
    {
        public int Size;
     }   
}

Test 클래스

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
 
namespace Sort
{
    class ComparerBySize : IComparer<Test> // Test객체를 정렬할 때 쓰는 클래스는 걸 알려준다
    {
        public int Compare(Test x, Test y)        //같은 유형끼리만 비교할 수 있다
        {
            if(x.Size < y.Size)
               return -1;       // -1을 반환한다는 것은 x객체가 y객체보다 앞으로 가야한다는 것을 뜻한다
                                   // 이는 x가 y보다 작다는 뜻이다
            if(x.Size > y.Size)
               return 1;        // 1을 반환한다는 것은 x객체가 y객체보다 뒤로 가야한다는 것을 뜻한다
                                   // 이는 x가 y보다 크다는 뜻이다
            else 
               return 0;
         }
     }
}

ComparerBySize 클래스

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using Syste.Collection.Generic;
 
namespace Sort
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Test> test = new List<Test>()
            {
                new Test(){ Size=17},
                new Test(){ Size=18},
                new Test(){ Size=14},
                new Test(){ Size=11},
                new Test(){ Size=15},
                new Test(){ Size=13}
             };
            
            ComparerBySize comparerSize = new ComparerBySize();
            
            test.Sort(comparerSize);
            
            foreach(Test t in test)
             Console.WriteLine(t.Size); // 11 13 14 15 17 18 출력
         }
     }
}

Main 

 


 


반응형

'OtherLanguage > C' 카테고리의 다른 글

20100609 c언어 정리  (0) 2010.06.09
구조체와 typedef 자료형 선언  (0) 2010.06.04
c언어 필기노트  (0) 2010.06.01
Comments