Keluar dengan cekap gelung bersarang C#
Dalam pengaturcaraan, gelung bersarang sering digunakan untuk mengulangi berbilang koleksi atau melakukan pengiraan yang rumit. Walau bagaimanapun, kadangkala anda mungkin perlu keluar lebih awal daripada gelung dalaman dan luaran, yang boleh mencipta cabaran prestasi dan kecekapan.
Soalan:
Jika anda mempunyai gelung bersarang untuk dan ingin keluar dari kedua-dua gelung (dalam dan luar) dengan cekap, apakah cara terpantas? Anda mungkin teragak-agak untuk menggunakan nilai Boolean atau pernyataan goto kerana kebimbangan prestasi atau pilihan gaya.
Penyelesaian:
Walaupun boleh menggunakan pernyataan goto, ia secara amnya dianggap sebagai pendekatan yang ketinggalan zaman dan tidak cekap. Pertimbangkan alternatif berikut:
1. Kaedah Tanpa Nama (C#):
Kaedah tanpa nama membolehkan anda mentakrifkan fungsi tanpa menyatakan namanya. Ini berguna dalam situasi di mana anda perlu membuat kelakuan gelung tersuai tanpa overhed pengisytiharan fungsi penuh. Dalam kaedah tanpa nama, anda boleh menggunakan pernyataan pulangan untuk keluar dari gelung dalam dan luar.
Contoh:
<code class="language-csharp">// 匿名方法 Action work = delegate { for (int x = 0; x < 10; x++) { for (int y = 0; y < 10; y++) { if (/* 退出条件 */) return; } } }; work();</code>
2. Fungsi setempat (C# 7 dan ke atas):
Fungsi tempatan ialah ciri yang diperkenalkan dalam C# 7 yang membolehkan anda mengisytiharkan fungsi dalam kaedah lain. Ini memberikan kesan yang serupa kepada kaedah tanpa nama, tetapi dengan sintaks yang lebih bersih dan lebih ekspresif.
Contoh:
<code class="language-csharp">// 局部函数(在另一个方法内部声明) void Work() { for (int x = 0; x < 10; x++) { for (int y = 0; y < 10; y++) { if (/* 退出条件 */) return; } } }</code>
Kaedah ini menyediakan cara yang cekap dan elegan untuk keluar dari gelung bersarang dalam satu baris kod. Ia boleh digunakan dalam situasi di mana anda perlu menamatkan pelaksanaan gelung lebih awal dan meneruskan pelaksanaan dengan bahagian kod seterusnya.
Atas ialah kandungan terperinci Bagaimana untuk Memecahkan Gelung Bersarang dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!