C# Array.sort

2540 단어 array
Array.sort에는 다음과 같은 3가지 방법이 있습니다.
  • 정렬 대기 대상이 IComparable 인터페이스를 실현
  • class Person :IComparable<Person>{
            private String firstname;
    
            public String Firstname
            {
                get { return firstname; }
                set { firstname = value; }
            }
    
            private String lastname;
    
            public String Lastname
            {
                get { return lastname; }
                set { lastname = value; }
            }
    
            public Person(String f,String l)
            {
                this.firstname = f;
                this.lastname = l;
            }
    
            
            public int CompareTo(Person other)
            {
                int result = this.Firstname.CompareTo(other.Firstname);
                if (result.Equals(0))
                {
                    result = this.Lastname.CompareTo(other.Lastname);
                }
                return result;
            }
        }

     
  • 정렬 대상은 수정할 수 없습니다. 정렬을 Comparison에 의뢰하세요
  • class util { 
            public static int comp(Person p1,Person p2){
                return p1.Lastname.CompareTo(p2.Lastname);
            }
        }
    
    Person p1 = new Person("san", "zhang");
                Person p2 = new Person("si", "li");
                Person p3 = new Person("wu", "wang");
                Person[] a = { p3,p1,p2};
    
    Array.Sort<Person>(a, new Comparison<Person>(util.comp));
    

    혹은
    Array.Sort<Person>(a, (Person x, Person y) => { 
                    int r = x.Firstname.CompareTo(y.Firstname);
                    if (r.Equals(0)) { 
                         r = x.Lastname.CompareTo(y.Lastname); 
                    }
                    return r;
                });

     
  • 정렬 대상을 수정할 수 없습니다. IComparer 인터페이스를 실현한 대상에게 정렬을 맡깁니다
  • class PersonComparer : IComparer<Person> {
    
            public int Compare(Person x, Person y)
            {
                int result = x.Lastname.CompareTo(y.Lastname);
                if (result.Equals(0))
                {
                    result = x.Firstname.CompareTo(y.Firstname);
                }
                return result;
            }
        }
    
    Person p1 = new Person("san", "zhang");
                Person p2 = new Person("si", "li");
                Person p3 = new Person("wu", "wang");
                Person[] a = { p3,p1,p2};
                Array.Sort<Person>(a,new PersonComparer());

    좋은 웹페이지 즐겨찾기