Bolehkah Pernyataan Suis Jatuh dalam C#?
Tukar pernyataan dalam C# lazimnya melaksanakan kod yang dikaitkan dengan kes yang dipadankan dan kemudian keluar dari suis . Walau bagaimanapun, terdapat keadaan apabila satu kes mungkin diingini mengalir ke yang lain, dikenali sebagai "fallthrough."
Dalam contoh yang diberikan, kaedah NumberToWords cuba menukar nombor kepada perwakilan perkataan yang sepadan. Ia menggunakan tiga tatasusunan untuk mewakili nombor, puluh dan remaja. Pernyataan suis mempertimbangkan panjang nombor input untuk sepadan dengan huruf besar yang sesuai:
Walau bagaimanapun, pengkompil C# membuang ralat kerana pernyataan suis tidak menyatakan secara eksplisit tempat untuk dilaksanakan selepas setiap kes. Secara lalai, C# memerlukan setiap kes mempunyai pernyataan putus atau pernyataan goto untuk mengelakkan kegagalan.
Untuk mencapai kegagalan dalam C#, anda boleh menggunakan teknik berikut:
Kes Kosong: Tentukan kes tanpa kod, membenarkan kes seterusnya dilaksanakan secara automatik.
switch (/*...*/) { case 0: break; // fall through to case 1 case 1: // do something break; }
goto case: Gunakan pernyataan goto untuk melompat ke case tertentu dalam suis.
switch (/*...*/) { case 0: goto case 1; case 1: // do something break; }
goto lalai: Gunakan pernyataan lalai goto untuk melompat ke lalai kes.
switch (/*...*/) { case 0: goto default; default: // do something break; }
Dalam contoh NumberToWords yang asal, goto boleh digunakan untuk mencapai tingkah laku fallthrough yang diingini:
switch (number.ToString().Length) { case 3: ans += string.Format("{0} hundred and ", numbers[number / 100]); goto case 2; case 2: int t = (number / 10) % 10; if (t == 1) { ans += teens[number % 10]; break; } else if (t > 1) ans += string.Format("{0}-", tens[t]); goto case 1; case 1: int o = number % 10; ans += numbers[o]; break; default: throw new ArgumentException("number"); }
Sementara fallthrough boleh memberikan yang lebih ringkas pelaksanaan dalam senario tertentu, adalah penting untuk menggunakannya dengan berhati-hati. Kesalahan yang berlebihan boleh menyebabkan kod mengelirukan dan sukar dikekalkan, jadi ia harus digunakan dengan bijak.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Gelagat Fallthrough dalam Pernyataan Suis C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!