CA2013: 値の型と共に ReferenceEquals を使用しないでください
プロパティ | 値 |
---|---|
ルール ID | CA2013 |
Title | 値の型と共に ReferenceEquals を使用しないでください |
[カテゴリ] | 信頼性 |
修正が中断ありか中断なしか | なし |
.NET 8 では既定で有効 | 警告として |
原因
System.Object.ReferenceEquals メソッドを使用して 1 つまたは複数の値の型の等価性をテストしています。
規則の説明
ReferenceEquals を使用して値を比較するときに、objA と objB が値の型である場合、この 2 つは ReferenceEquals メソッドに渡される前にボックス化されます。 つまり、次の例で示すように、objA と objB が同じ値の型のインスタンスを表している場合でも、ReferenceEquals メソッドからは false が返されます。
違反の修正方法
違反を修正するには、==
など、より適切な等価性チェックに置き換えます。
int int1 = 1, int2 = 1;
// Violation occurs, returns false.
Console.WriteLine(Object.ReferenceEquals(int1, int2)); // false
// Use appropriate equality operator or method instead
Console.WriteLine(int1 == int2); // true
Console.WriteLine(object.Equals(int1, int2)); // true
どのようなときに警告を抑制するか
この規則による警告は抑制できません。 ==
など、より適切な等値演算子を使用することをお勧めします。
関連規則
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET