Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengelakkan Rekursi Infinite Apabila Melebihkan Operator Kesamaan (==)?
Lebihkan beban operator kesaksamaan (==) dengan selamat untuk mengelakkan pengulangan tak terhingga
Apabila membebankan operator kesamarataan (==), pastikan anda mengendalikan kes kosong dengan berhati-hati untuk mengelakkan pengulangan yang tidak terhingga. Gelung infiniti == semakan mungkin terhasil apabila satu atau kedua-dua operan kosong.
Untuk menyelesaikan isu ini, sila gunakan kaedah ReferenceEquals
dan bukannya == untuk membandingkan nilai nol objek. Kaedah ini mengembalikan benar jika kedua-dua operan adalah batal atau jika kedua-dua operan merujuk kepada objek yang sama, palsu sebaliknya. Dengan menggunakan ReferenceEquals
, kod berikut mengendalikan nilai nol dengan tepat:
<code class="language-csharp">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>
Dengan mengambil pendekatan ini, kaedah == terlebih beban boleh membandingkan objek Foo dengan cekap (tidak kira sama ada ia batal) tanpa mencetuskan rekursi tak terhingga.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Rekursi Infinite Apabila Melebihkan Operator Kesamaan (==)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!