Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 배열 객체가 다른 배열 객체와 같은지 확인하는 방법

C#에서 한 배열 객체가 다른 배열 객체와 같은지 확인하려면 Equals() 메서드를 사용하면 됩니다. 다만 배열의 Equals() 메서드는 두 배열이 동일한 객체(참조)를 가리키는지를 판단할 뿐, 배열의 요소 값까지 비교하지는 않는다는 점에 유의해야 합니다. 아래 예제를 통해 자세히 살펴보겠습니다.

예제 1: 서로 다른 배열 객체 비교하기

using System;
public class Demo {
    public static void Main(){
        String[] strArr1 = new String[3] { "John", "Jacob", "Tim"};
        String[] strArr2 = new String[3] { "Tom", "Brad", "Bradley"};
        Console.WriteLine("첫 번째 문자열 배열...");
        foreach(string val in strArr1){
            Console.WriteLine(val);
        }
        Console.WriteLine("두 번째 문자열 배열...");
        foreach(string val in strArr2){
            Console.WriteLine(val);
        }
        Console.WriteLine("두 배열 객체가 같은가? = " + strArr1.Equals(strArr2));
    }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

첫 번째 문자열 배열...
John
Jacob
Tim
두 번째 문자열 배열...
Tom
Brad
Bradley
두 배열 객체가 같은가? = False

strArr1과 strArr2는 요소 내용과 관계없이 각각 별개의 배열 인스턴스를 참조하고 있기 때문에 Equals() 메서드는 False를 반환합니다.

예제 2: 참조를 공유하는 배열 비교하기

이번에는 하나의 배열 변수를 다른 배열 변수에 할당한 뒤 비교해 보겠습니다.

using System;
public class Demo {
    public static void Main(){
        int[] arr1 = new int[5] { 10, 20, 30, 40, 50};
        int[] arr2 = new int[5] { 25, 25, 40, 55, 70};
        Console.WriteLine("첫 번째 정수 배열...");
        foreach(int val in arr1){
            Console.WriteLine(val);
        }
        Console.WriteLine("두 번째 정수 배열...");
        foreach(int val in arr2){
            Console.WriteLine(val);
        }
        arr1 = arr2;
        Console.WriteLine("두 배열 객체가 같은가? = " + arr1.Equals(arr2));
    }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

첫 번째 정수 배열...
10
20
30
40
50
두 번째 정수 배열...
25
25
40
55
70
두 배열 객체가 같은가? = True

arr1 = arr2; 문장을 통해 arr1이 arr2와 동일한 배열 객체를 참조하게 되었으므로, 이번에는 Equals() 메서드가 True를 반환합니다.

참고: 배열 요소 자체를 비교하려면?

배열의 참조가 아닌 요소 값을 기준으로 두 배열을 비교하고 싶다면 LINQ에서 제공하는 SequenceEqual() 메서드를 사용하는 것이 좋습니다.

using System;
using System.Linq;
public class Demo {
    public static void Main(){
        int[] arr1 = { 10, 20, 30 };
        int[] arr2 = { 10, 20, 30 };
        Console.WriteLine(arr1.Equals(arr2));          // False (참조가 다름)
        Console.WriteLine(arr1.SequenceEqual(arr2));   // True (모든 요소가 같음)
    }
}

정리하면, Equals()는 배열의 참조 동등성을 확인하는 데 사용되며, 실제 요소 값의 일치 여부를 확인하려면 SequenceEqual()과 같은 방법을 활용해야 합니다.