コードインスペクション:'base.Equals(...)' への呼び出しは参照等価です
base.Equals(...) は、基底クラスがオーバーライドしない限り、 object.Equals を呼び出します。 つまり、参照の等価性のみをチェックするため、オーバーライドされた Equals メソッド内では望ましくない動作となる場合が多いのです。
このインスペクションは、呼び出しが object.Equals(...) に解決される場合に、その呼び出しを base.Equals(...) に報告します。 この場合、コードはオブジェクトの状態を比較せず、通常はオーバーライドが正しく動作しなくなります。
サンプル
class Person
{
public string Name { get; }
public override bool Equals(object? obj)
{
return base.Equals(obj);
}
}
class Person
{
public string Name { get; }
public override bool Equals(object? obj)
{
return obj is Person other && Name == other.Name;
}
}
2026 年 6 月 12 日