public class Foo : IEquatable<Foo>
{
public override bool Equals(object right)
{
if (Object.ReferenceEquals(right, null))
return false;
if (Object.ReferenceEquals(this, right))
return true;
if (this.GetType() != right.GetType())
return false;
return this.Equals(right as Foo);
}
#region IEquatable<Foo> メンバー
public bool Equals(Foo other)
{
return true;
}
#endregion
- 例外を発生させない
- GetType()で型を比較する
- IEquatableを実装する
- 親クラスがObjectまたはValueTypeでない場合は親クラスのEquals()を呼ぶ
- GetHashCode()をオーバーライドする
- 値型の場合は、==演算子もオーバーライドする※参照型の場合は基本的に不要