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 サイトの他の関連記事を参照してください。