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