ホームページ >バックエンド開発 >C++ >C# で参照型インスタンスを最適に比較するにはどうすればよいですか?

C# で参照型インスタンスを最適に比較するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-07 17:31:41955ブラウズ

How to Best Compare Reference Type Instances in C#?

C# 参照型インスタンスの比較: ベスト プラクティス

ソフトウェア開発では、2 つの参照型インスタンスを比較するのが一般的なタスクです (たとえば、それらに同じデータが含まれているかどうかを判断するため)。等価演算子 (==) または Equals メソッドをオーバーライドすることは広く使用されているアプローチですが、Microsoft の最近のガイダンスではオーバーライドを行わないよう推奨しています。これにより、参照型を比較す​​るためのベスト プラクティスは何なのかという疑問が生じます。

推奨される方法: IEquatable インターフェイスを実装する

値セマンティクスを持つ参照型 (等しいとは不変型が等しいことを意味します) の場合は、System.IEquatable インターフェイスを実装することをお勧めします。このインターフェイスは、この型のカスタム等価比較を実装する Equals メソッドを提供します。さらに、必要な 3 つの操作 (Equals、GetHashCode、等価演算子) をすべて実装すると、一貫性が確保され、コードの重複が回避されます。

次に、このメソッドを使用して値の等価性を実装するクラスの例を示します。

<code class="language-csharp">class Point : IEquatable<Point>
{
    // 为简洁起见,省略字段和构造函数

    public bool Equals(Point other)
    {
        // 对 X 和 Y 属性进行相等性检查
    }

    // 包含其他必需的重写和运算符
}</code>

アイデンティティ比較を避ける

不変の値を表さない参照クラスの等価演算子 (= および !=) をオーバーライドしないでください。代わりに、オブジェクトの ID を比較するデフォルトの動作に依存します。このメソッドは、唯一のインスタンスとなることを目的としたクラスに適しています。

その他の注意事項

派生クラスを別の方法で処理する必要がある場合は、Equals メソッドに型チェックを追加して、同じ型のインスタンス間でのみ比較が実行されるようにすることができます。

結論

参照型の場合、正確な比較を行うには、コードの重複なしに等価性を正確かつ効率的に実装することが重要です。 IEquatable インターフェイスを実装するための推奨プラクティスを採用し、アイデンティティと値のセマンティクスに関するガイドラインに従うことにより、開発者は参照型の比較を伴う信頼性の高い効率的な操作を保証できます。

以上がC# で参照型インスタンスを最適に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。