Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mencapai Gelagat Fallthrough dalam Pernyataan Suis C#?

Bagaimanakah Saya Boleh Mencapai Gelagat Fallthrough dalam Pernyataan Suis C#?

Patricia Arquette
Lepaskan: 2025-01-04 22:13:46
asal
970 orang telah melayarinya

How Can I Achieve Fallthrough Behavior in C#'s Switch Statements?

Memahami Kegagalan Pernyataan Suis dalam C#

Dalam C#, pernyataan suis membenarkan aliran program diarahkan berdasarkan nilai pembolehubah yang diberikan. Walau bagaimanapun, binaan if/else tradisional tidak mempunyai keupayaan untuk "melewati" kes yang berbeza seperti yang dilakukan oleh pernyataan suis.

Pertimbangkan contoh berikut, yang cuba menukar nombor kepada perwakilan perkataannya:

static string NumberToWords(int number)
{
    string[] numbers = new string[] 
        { "", "one", "two", "three", "four", "five", 
          "six", "seven", "eight", "nine" };
    string[] tens = new string[] 
        { "", "", "twenty", "thirty", "forty", "fifty", 
          "sixty", "seventy", "eighty", "ninety" };
    string[] teens = new string[]
        { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
          "sixteen", "seventeen", "eighteen", "nineteen" };

    string ans = "";
    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");
    }
    return ans;
}
Salin selepas log masuk

Apabila kod ini disusun, ia gagal dengan ralat yang menunjukkan bahawa kawalan tidak boleh jatuh dari satu kes ke yang lain. Isu ini berpunca daripada fakta bahawa dalam C#, pernyataan suis memerlukan rehat yang jelas selepas setiap kes untuk memastikan aliran pelaksanaan dikawal.

Mencapai Fallthrough

Untuk mencapai kegagalan dalam pernyataan suis, terdapat tiga pilihan:

  1. Kosong Kes: Kes boleh dibiarkan kosong, dengan berkesan membenarkan kes seterusnya tanpa sebarang pelaksanaan kod.
  2. Kes Goto: Sintaks kes goto boleh digunakan untuk memindahkan kawalan secara eksplisit kepada kes tertentu.
  3. Goto lalai: Kawalan pemindahan sintaks lalai goto kepada kes lalai, walaupun jika kes semasa tidak sama dengan lalai.

Contoh dengan Fallthrough

Versi diubah suai fungsi NumberToWords berikut menggunakan goto sintaks huruf besar untuk mencapai kegagalan:

static string NumberToWords(int number)
{
    string[] numbers = new string[] 
        { "", "one", "two", "three", "four", "five", 
          "six", "seven", "eight", "nine" };
    string[] tens = new string[] 
        { "", "", "twenty", "thirty", "forty", "fifty", 
          "sixty", "seventy", "eighty", "ninety" };
    string[] teens = new string[]
        { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
          "sixteen", "seventeen", "eighteen", "nineteen" };

    string ans = "";
    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");
    }
    return ans;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan