演算子のオーバーロードで null 値を扱うときに無限再帰を回避するにはどうすればよいですか?
比較演算子のオーバーロードを定義する場合、無限再帰を避けるために null の場合を正しく処理することが重要です。次のコードは、== 演算子のオーバーロードにおける無限再帰の問題を示しています。
<code class="language-c#">Foo foo1 = null; Foo foo2 = new Foo(); Assert.IsFalse(foo1 == foo2); public static bool operator ==(Foo foo1, Foo foo2) { if (foo1 == null) return foo2 == null; return foo1.Equals(foo2); }</code>
メソッドを使用して null 値を明示的にチェックする必要があります。
ReferenceEquals
<code class="language-c#">Foo foo1 = null; Foo foo2 = new Foo(); Assert.IsFalse(foo1 == foo2); public static bool operator ==(Foo foo1, Foo foo2) { if (object.ReferenceEquals(null, foo1)) return object.ReferenceEquals(null, foo2); return foo1.Equals(foo2); }</code>
以上がNull を処理するときに演算子のオーバーロードで無限再帰を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。