C# Equals() と== の比較

Muhammad Maisam Abbas 2024年2月16日
C# Equals() と== の比較

このチュートリアルでは、== 演算子と C# の Equals() 関数の相違点と類似点に焦点を当てます。

C# の == 演算子と Equals() 関数の違い

== 演算子は C# の比較演算子です。== 演算子は、両方のオペランドの参照 ID を比較します。一方、Equals() 関数は、C# の 2つの文字列変数の内容を比較します。通常、両方とも 2つの値を比較するために使用されます。ただし、シナリオが異なれば、結果も異なる可能性があります。次のコード例は、== 演算子と 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

上記のコードでは、オブジェクト変数 var2var2 = var1 で初期化しました。これは、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 を返します。ただし、var1var2 の内容を比較しているため、Equals() 関数は 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