ホームページ > バックエンド開発 > C++ > C# で複雑なオブジェクトの同等性を効率的に判断するにはどうすればよいですか?

C# で複雑なオブジェクトの同等性を効率的に判断するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-19 08:06:09
オリジナル
744 人が閲覧しました

How Can I Efficiently Determine Equality for Complex Objects in C#?

C# の効率的で複雑なオブジェクト

複雑なオブジェクトを比較する場合、効率的な方法を選択することが重要です。 C# 4.0 以降では、IEquatable<T> インターフェイスを利用して高速な比較を実現するのが最善の方法です。

カスタム型の IEquatable を実装する

比較に参加するすべてのカスタム タイプに対して IEquatable<T> インターフェイスを実装します。包含型では、包含型の Equals メソッドを呼び出します。含まれる要素がコレクションの場合、SequenceEqual 拡張メソッドが使用され、各要素に対して内部で Equals を呼び出します。

値型と参照型のメソッドに等しい

値の型の場合は、Equals メソッドを直接呼び出します。プロパティまたはフィールドには、値が割り当てられていない場合でも、デフォルト値があります。参照型の場合は、まず ReferenceEquals を使用して参照の等価性をチェックします。チェックが失敗した場合は、null 参照がチェックされ、Equals メソッドが呼び出されます。これにより、最適化された比較が保証されます。

実装例

<code class="language-csharp">public class Person : IEquatable<Person>
{
    // ...
    public bool Equals(Person other)
    {
        // ...
    }
}

public class Address : IEquatable<Address>
{
    // ...
    public bool Equals(Address other)
    {
        // ...
    }
}

public class City : IEquatable<City>
{
    // ...
    public bool Equals(City other)
    {
        // ...
    }
}</code>
ログイン後にコピー

以上がC# で複雑なオブジェクトの同等性を効率的に判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート