C# Equals() 대 ==

이 자습서에서는 C#의==연산자와 Equals() 함수의 차이점과 유사점을 강조합니다.

C#에서==연산자와Equals()함수의 차이점

==연산자는 C#의 비교 연산자입니다. ==연산자는 두 피연산자의 참조 ID를 비교합니다. 반면에 Equals()함수는 C#에서 두 문자열 변수의 내용을 비교합니다. 일반적으로 둘 다 두 값을 비교하는 데 사용됩니다. 그러나 시나리오에 따라 결과가 다를 수 있습니다. 다음 코드 예제는==연산자와Equals()함수가 모두 참인 시나리오를 보여줍니다.

using System;

namespace comparison
{
    class Program
    {
        static void Main(string[] args)
        {
            object var1 = "MMA";
            object var2 = var1;
            if (var1 == var2)
            {
                Console.WriteLine("== is true");
            }
            if (var1.Equals(var2))
            {
                Console.WriteLine("Equals is true");
            }
        }
    }
}

출력:

== is true
Equals is true

위의 코드에서var2 = var1을 사용하여 객체 변수var2를 초기화했습니다. 이는var1var2모두 메모리에서 동일한 ID를 참조 함을 의미합니다. 따라서==연산자는true결과가됩니다. 둘 다 내부에 동일한 내용이 있으므로Equals()함수도true를 제공합니다.

이제==연산자가false를 제공하지만Equals()함수가true값을 반환하는 또 다른 시나리오를 보여줍니다. 이 시나리오는 아래 코드 예제에서 설명합니다.

using System;

namespace comparison
{
    class Program
    {
        static void Main(string[] args)
        {
            object var1 = "MMA";
            char[] varc = { 'M', 'M', 'A' };
            object var2 = new string(varc);
            if(var1 == var2)
            {
                Console.WriteLine("== is true");
            }
            if (var1.Equals(var2))
            {
                Console.WriteLine("Equals is true");
            }
        }
    }
}

출력:

Equals is true

위의 코드에서 우리는 문자 배열varc를 생성하고 문자열 변수의 생성자에varc를 전달하여 객체 변수var2로 변환했습니다. 이는var1var2가 모두 메모리에서 서로 다른 ID를 가리킴을 의미합니다. ==연산자는var1var2의 참조 ID를 비교하므로false를 반환합니다. 그러나Equals()함수는var1var2의 내용을 비교하기 때문에 true를 반환합니다.