English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
한 개의 동등 연산자: SequenceEqual. SequenceEqual 메서드는 두 집합의 요소 개수와 각 요소의 값 및 요소의 순서가 동일한지 확인합니다.
집합이 원시 데이터 타입 요소를 포함하면 요소의 값과 개수를 비교하고, 복잡한 타입 요소를 포함한 집합은 객체의 참조를 확인합니다. 따라서 객체가 같은 참조를 가르치면 그들을 동일하게 간주하고, 다를 경우 불일치로 간주합니다.
다음 예제는 원시 데이터 타입 셋의 SequenceEqual 메서드를 보여줍니다.
= new List<string>(){"One", "Two", "Three", "Four", "Three"};1 = new List(){"One", "Two", "Three", "Four", "Three"}; = new List<string>(){"One", "Two", "Three", "Four", "Three"};2 = new List (){"One", "Two", "Three", "Four", "Three"}; = new List<string>(){ "Two", "One", "Three", "Four", "Three" };1bool isEqual = strList2isEqual = studentList // = new List<Student>(){ std }; .SequenceEqual(strList
True
요소의 순서가 다를 경우 SequenceEqual() 메서드는 false를 반환합니다.
= new List<string>(){"One", "Two", "Three", "Four", "Three"};1 = new List(){"One", "Two", "Three", "Four", "Three"}; = new List<string>(){"One", "Two", "Three", "Four", "Three"};2 IList<string> strList = new List<string>(){ "Two", "One", "Three", "Four", "Three" };1bool isEqual = strList2isEqual = studentList // ); .SequenceEqual(strList
출력:
false
예제: C#의 SequenceEqual 1= new Student() { StudentID = IList<Student> studentList1 Student std = new Student() { StudentID = IList<Student> studentList2 Student std = new Student() { StudentID = bool isEqual = studentList1.SequenceEqual(studentList2isEqual = studentList // = new List<Student>(){ std }; 이면 true를 반환합니다1 Student std 1= new Student() { StudentID = 이면 true를 반환합니다2 Student std 1= new Student() { StudentID = IList<Student> studentList3 , StudentName = "Bill" };1}; IList<Student> studentList4 , StudentName = "Bill" };2 }; = new List<Student>(){ std3.SequenceEqual(studentList4isEqual = studentList// );
이 위의 예제에서 false를 반환합니다.1와 studentList2와 같은 학생 객체 std를 포함하고 있습니다. 따라서 studentList1.SequenceEqual(studentList2)이 true를 반환하지만, stdList1와 stdList2두 개의 독립적인 학생 객체 std1와 std2이므로 지금은, std1와 std2같은 값이 포함된 stdList1.SequenceEqual(stdList2)도 false를 반환합니다.
두 개의 복잡한 타입(참조 타입이나 객체) 셋의 값을 비교하려면 IEqualityComperar <T> 인터페이스를 구현해야 합니다. 다음과 같이 합니다.
class StudentComparer : IEqualityComparer<Student> { public bool Equals(Student x, Student y) { x.StudentID == y.StudentID 이고 x.StudentName.ToLower() == y.StudentName.ToLower()라면 return true; return false; } public int GetHashCode(Student obj) { return obj.GetHashCode(); } }
이제 SequenceEqual 확장 메서드의 StudentComparer 클래스를 두 번째 매개변수로 사용하여 값을 비교할 수 있습니다:
예제:C#에서 SequenceEqual을 사용하여 객체 타입 요소를 비교
IList<Student> studentList1 = new List<Student>() { new Student() { StudentID = 1, StudentName = "John", Age = 18 }, new Student() { StudentID = 2, StudentName = "Steve", Age = 15 }, new Student() { StudentID = 3, StudentName = "Bill", Age = 25 }, new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 }, new Student() { StudentID = 5, StudentName = "Ron" , Age = 19 } }; IList<Student> studentList2 = new List<Student>() { new Student() { StudentID = 1, StudentName = "John", Age = 18 }, new Student() { StudentID = 2, StudentName = "Steve", Age = 15 }, new Student() { StudentID = 3, StudentName = "Bill", Age = 25 }, new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 }, new Student() { StudentID = 5, StudentName = "Ron" , Age = 19 } }; // 다음이 참을 경우 bool isEqual = studentList1.SequenceEqual(studentList2, new StudentComparer());
SequenceEqual 메서드는 항목 수와 그 원시 데이터 타입의 값을 비교합니다.
SequenceEqual 메서드는 복잡한 데이터 타입의 참조를 비교합니다.
IEqualityComparer 클래스를 사용하여 SequenceEqual 메서드를 통해 두 복잡한 타입의 컬렉션을 비교할 수 있습니다.