コードインスペクション:「CannotApplyEqualityOperatorAttribute」が付与された型の値は「Equals()」を使って比較してください。
JetBrains Rider は、 ReSharper.Annotations に [CannotApplyEqualityOperator] 属性を提供し、 == および != 演算子の使用が不適切で、 Equals() に置き換える必要がある型をマークします。 その結果、この属性でマークされた型が == または != を使用して比較されると、JetBrains Rider は警告を発行します。
JetBrains Rider は、 null と比較する際の等値演算子の使用は自明であると見なし、この場合は警告を表示しません。
[CannotApplyEqualityOperator]
class NoEqualityOperators
{
}
class TestEquality
{
bool Test()
{
var ne1 = new NoEqualityOperators();
var ne2 = new NoEqualityOperators();
return ne1 == ne2; // warning
}
}
[CannotApplyEqualityOperator]
class NoEqualityOperators
{
}
class TestEquality
{
bool Test()
{
var ne1 = new NoEqualityOperators();
var ne2 = new NoEqualityOperators();
return Equals(ne1, ne2);
}
}
JetBrains Rider がどのライブラリ型を等値演算子で比較できないかをどうやって知っているのか、不思議に思うかもしれません。 その仕組みは、.NET Framework クラスライブラリや他のよく使われるライブラリに対して 外部アノテーション を利用しています。 これらのアノテーションは JetBrains Rider のインストールに含まれています。 このインスペクションをトリガーする [CannotApplyEqualityOperator] 属性は カスタム型 にも使えますし、 外部アノテーション の仕組みを使って利用している他のコンパイル済みライブラリの型にもアノテーションできます。
2026 年 6 月 12 日