C# Equals() 대 ==

Muhammad Maisam Abbas 2024년2월16일
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를 반환합니다.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

관련 문장 - Csharp Operator