Rumah >pembangunan bahagian belakang >C++ >Bolehkah Pernyataan Suis C# Jatuh, dan Jika Ya, Bagaimana?

Bolehkah Pernyataan Suis C# Jatuh, dan Jika Ya, Bagaimana?

Linda Hamilton
Linda Hamiltonasal
2025-01-03 14:26:46877semak imbas

Can C# Switch Statements Fall Through, and If So, How?

Tukar Pernyataan Kegagalan dalam C#

Pernyataan suis menyediakan cara untuk melaksanakan kod yang berbeza berdasarkan nilai pembolehubah yang ditentukan. Walaupun pernyataan suis menawarkan beberapa kelebihan berbanding binaan if/else if, salah satu batasannya ialah ketidakupayaan untuk meneruskan dari satu kes ke kes yang lain.

Dalam C#, pengkompil menguatkuasakan peraturan "tiada fallthrough", yang bermaksud bahawa pelaksanaan mesti melompat ke permulaan kes seterusnya apabila kes dicapai. Tingkah laku ini memastikan kejelasan kod dan menghalang pelaksanaan berbilang kes yang tidak disengajakan.

Pertimbangkan contoh berikut, di mana kami cuba menukar nombor kepada perwakilan perkataannya menggunakan pernyataan suis:

switch (number.ToString().Length)
{
    case 3:
        ans += string.Format("{0} hundred and ", numbers[number / 100]);
    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]);
    case 1:
        int o = number % 10;
        ans += numbers[o];

        break;
    default:
        throw new ArgumentException("number");
}

Apabila melaksanakan kod ini, pengkompil akan menghasilkan ralat yang menunjukkan bahawa "Kawalan tidak boleh jatuh dari satu label kes ('kes 3:') kepada yang lain" dan "Kawalan tidak boleh jatuh daripada satu label kes ('kes 2:') kepada yang lain."

Untuk mencapai tingkah laku fallthrough dalam C#, seseorang boleh menggunakan teknik berikut:

  1. Kes Kosong: Seseorang boleh mencipta kes kosong untuk memaksa kegagalan. Sebagai contoh, kes 0: boleh digantikan dengan kes kosong dalam contoh di atas.
  2. Kes Goto: Sintaks kes goto membenarkan kesilapan yang jelas. Sebagai contoh, seseorang boleh menggunakan kes goto 2; pada penghujung kes 1: untuk jatuh ke kes 2: dalam contoh yang diberikan.
  3. Goto Lalai: Begitu juga, goto lalai; boleh digunakan untuk jatuh ke dalam kes lalai.

Adalah penting untuk ambil perhatian bahawa fallthrough tidak disyorkan kerana potensinya untuk mencipta kod yang tidak jelas dan terdedah kepada ralat. Secara umumnya, amalan yang lebih baik untuk menggunakan if/else atau binaan bersyarat lain apabila berbilang syarat perlu disemak.

Atas ialah kandungan terperinci Bolehkah Pernyataan Suis C# Jatuh, dan Jika Ya, Bagaimana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn