C# SequenceEqual 메서드란?
C#의 SequenceEqual 메서드는 두 컬렉션이 동일한지 여부를 판별하는 데 사용되는 LINQ 확장 메서드입니다. 이 메서드는 두 시퀀스에 포함된 요소의 개수가 같고, 각 요소가 순서대로 일치할 때 true를 반환합니다.
즉, 단순히 같은 값을 포함하는지만 확인하는 것이 아니라 요소의 순서까지도 비교한다는 점이 중요합니다.
기본 사용 예제
먼저 세 개의 문자열 배열을 준비해 보겠습니다.
string[] arr1 = { "This", "is", "it" };
string[] arr2 = { "My", "work", "report" };
string[] arr3 = { "This", "is", "it" };이제 SequenceEqual() 메서드를 사용하여 첫 번째 배열과 두 번째 배열을 비교합니다.
arr1.SequenceEqual(arr2);
전체 예제 코드
using System;
using System.Linq;
class Program {
static void Main() {
string[] arr1 = { "This", "is", "it" };
string[] arr2 = { "My", "work", "report" };
string[] arr3 = { "This", "is", "it" };
bool res1 = arr1.SequenceEqual(arr2);
Console.WriteLine(res1);
bool res2 = arr1.SequenceEqual(arr3);
Console.WriteLine(res2);
}
}실행 결과
False True
결과 분석
실행 결과는 다음과 같이 해석할 수 있습니다.
arr1.SequenceEqual(arr2)→False: 두 배열은 요소의 내용과 순서가 서로 다르기 때문에 동일하지 않습니다.arr1.SequenceEqual(arr3)→True: 두 배열은 같은 요소를 같은 순서로 가지고 있으므로 동일하다고 판단됩니다.
주요 특징 및 참고 사항
SequenceEqual 메서드를 사용할 때 기억해야 할 핵심 특징은 다음과 같습니다.
- 순서 비교: 요소의 값이 같더라도 순서가 다르면
false를 반환합니다. 예를 들어{ "a", "b" }와{ "b", "a" }는 동일하지 않은 것으로 처리됩니다. - 기본 비교자: 별도의 비교자를 지정하지 않으면 해당 타입의 기본 동등성 비교자(
EqualityComparer<T>.Default)를 사용합니다. - 사용자 지정 비교자: 필요에 따라
IEqualityComparer<T>구현체를 매개변수로 전달하여 대소문자 무시 등의 사용자 지정 비교 로직을 적용할 수 있습니다. - null 처리: 두 시퀀스가 모두
null이면 동일한 것으로 간주되며, 하나만null인 경우에는 동일하지 않다고 판단됩니다.
컬렉션의 동등성을 검증하는 테스트 코드나 데이터 일치 여부를 확인해야 하는 상황에서 SequenceEqual 메서드는 매우 유용하게 활용될 수 있습니다.