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
上記のコードでは、オブジェクト変数 var2
を var2 = var1
で初期化しました。これは、var1
と var2
の両方がメモリ内の同じ 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
に変換しました。これは、var1
と var2
の両方がメモリ内の異なる ID を指していることを意味します。==
演算子は、var1
と var2
の参照 ID を比較するため、false
を返します。ただし、var1
と var2
の内容を比較しているため、Equals()
関数は true を返します。
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