参照型を比較するには、等価演算子 (==) または Equals メソッドをオーバーライドするのが一般的です。ただし、MSDN の最近のディスカッションでは、このアプローチを慎重に扱うことが推奨されています。疑問は残ります:
2 つの参照型を効率的かつ正確に比較するにはどうすればよいですか?
前述の MSDN 記事によると、等価演算子 (==) と Equals メソッドのオーバーライドは、データの同一性ではなくインスタンスの同一性を比較するため、参照型に対しては一般に推奨されません。これにより、場合によっては予期しない結果が生じる可能性があります。
値のセマンティクス (データの内容に基づいて等価性を判断する) を持つ参照型の場合、ベスト プラクティスは System.IEquatable
次に、IEquatable
<code>public class Point : IEquatable<Point> { public int X { get; } public int Y { get; } public bool Equals(Point other) => X.Equals(other.X) && Y.Equals(other.Y); }</code>他のメソッドを実装する
を使用する場合は、Equals の実装に加えて、次のメソッドを実装することも推奨されます:
が推奨されるアプローチですが、それがシナリオに合わない場合は、カスタム比較関数を検討することもできます。これには、データの同等性比較を実行してブール値を返すカスタム メソッドの定義が含まれます。
以上が.NET で参照型を比較する最良の方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。