
演算子のオーバーロードで 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 サイトの他の関連記事を参照してください。