C# 参照型インスタンスの比較: ベスト プラクティス
ソフトウェア開発では、2 つの参照型インスタンスを比較するのが一般的なタスクです (たとえば、それらに同じデータが含まれているかどうかを判断するため)。等価演算子 (==) または Equals メソッドをオーバーライドすることは広く使用されているアプローチですが、Microsoft の最近のガイダンスではオーバーライドを行わないよう推奨しています。これにより、参照型を比較するためのベスト プラクティスは何なのかという疑問が生じます。
推奨される方法: IEquatable インターフェイスを実装する
値セマンティクスを持つ参照型 (等しいとは不変型が等しいことを意味します) の場合は、System.IEquatable
次に、このメソッドを使用して値の等価性を実装するクラスの例を示します。
<code class="language-csharp">class Point : IEquatable<Point> { // 为简洁起见,省略字段和构造函数 public bool Equals(Point other) { // 对 X 和 Y 属性进行相等性检查 } // 包含其他必需的重写和运算符 }</code>
アイデンティティ比較を避ける
不変の値を表さない参照クラスの等価演算子 (= および !=) をオーバーライドしないでください。代わりに、オブジェクトの ID を比較するデフォルトの動作に依存します。このメソッドは、唯一のインスタンスとなることを目的としたクラスに適しています。
その他の注意事項
派生クラスを別の方法で処理する必要がある場合は、Equals メソッドに型チェックを追加して、同じ型のインスタンス間でのみ比較が実行されるようにすることができます。
結論
参照型の場合、正確な比較を行うには、コードの重複なしに等価性を正確かつ効率的に実装することが重要です。 IEquatable インターフェイスを実装するための推奨プラクティスを採用し、アイデンティティと値のセマンティクスに関するガイドラインに従うことにより、開発者は参照型の比較を伴う信頼性の高い効率的な操作を保証できます。
以上がC# で参照型インスタンスを最適に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。