C# equals()メソッドの使い方:比較方法と注意点
C#において、Equalsメソッドは2つのオブジェクトが等しいかどうかを比較するためのメソッドです。EqualsメソッドはObjectクラスから継承されているため、すべてのC#オブジェクトはEqualsメソッドを持っています。
Equalsメソッドを使用してオブジェクトを比較する際、実際には2つのオブジェクトの参照が同じかどうかを比較しています。つまり、2つのオブジェクトが同じメモリアドレスを指している場合、それらは等しいとみなされます。しかし、参照が異なる場合、内容が同じでも、Equalsメソッドはfalseを返します。
2つのオブジェクトの内容を比較したい場合、通常はEqualsメソッドを再定義し、内容に基づいて比較する必要があります。通常、ハッシュコードが内容と一致するオブジェクトが等しいことを保証するために、GetHashCodeメソッドも再定義する必要があります。
例えば、Equalsメソッドを以下のように書き直すことができます:
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
{
return false;
}
// 比较对象的内容是否相等
MyClass other = (MyClass)obj;
return this.Property1 == other.Property1 && this.Property2 == other.Property2;
}
Equalsメソッドを再定義した後、オブジェクトの内容に基づいて2つのオブジェクトが等しいかどうかを判断できます。