연산자 오버로딩에서 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>
이 시나리오에서 == 연산자 오버로드는 피연산자 중 하나가 비어 있을 때 자신을 재귀적으로 호출합니다. 이 문제를 방지하려면 ReferenceEquals
메서드를 사용하여 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 (object.ReferenceEquals(null, foo1)) return object.ReferenceEquals(null, foo2); return foo1.Equals(foo2); }</code>
ReferenceEquals
을 사용하면 오버로드는 동등 비교를 진행하기 전에 두 피연산자가 모두 비어 있는지 확인합니다. 이는 무한 재귀를 방지하고 null 경우의 올바른 동작을 보장합니다.
위 내용은 Null을 처리할 때 연산자 오버로딩의 무한 재귀를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!