DA0006: 値の型で Equals() をオーバーライドしてください
規則 ID |
DA0006 |
分類 |
.NET Framework の使用 |
プロファイル方法 |
サンプリング |
メッセージ |
値の型で Equals と等値演算子をオーバーライドしてください。 |
メッセージの種類 |
警告 |
原因
Equals メソッドまたはパブリックの値型の等値演算子の呼び出しがプロファイル データの大きな割合を占めています。 より効率的な方法を実装することを検討してください。
規則の説明
値型の場合、Equals を継承した実装が System.Reflection ライブラリを使用して、型のすべてのフィールドの内容を比較します。 Reflection は計算コストが高いため、場合によってはすべてのフィールドで等値性を比較する必要はありません。 ユーザーがインスタンスの比較または並べ替えを行うことや、ハッシュ テーブル キーとしてインスタンスを使用することが予想される場合には、値型に Equals を実装する必要があります。 また、プログラム言語で演算子のオーバーロードをサポートしている場合、等値演算子と非等値演算子を実装する必要もあります。
Equals と等値演算子のオーバーライド方法の詳細については、「Equals および等値演算子 (==) 実装のガイドライン」を参照してください。
警告の調査方法
Equals と等値演算子の実装例については、コード分析規則「CA1815: equals および operator equals を値型でオーバーライドします」を参照してください。