簡體   English   中英

避免在C#中使用goto語句

[英]Avoid goto statement in C#

我不想使用某種goto語句,但我希望用戶在執行默認情況時返回主菜單。 怎么樣?? 我知道這是一個簡單的問題,但必定會有很多新手遇到非常相似的東西。

static void buycoffee()
{
    Double price = 0;
    int x = 0;
    while (x == 0)
    {
        Console.WriteLine("Pick a coffee Size");
        Console.WriteLine("1: Small");
        Console.WriteLine("2: Medium");
        Console.WriteLine("3: Large");
        int Size = int.Parse(Console.ReadLine());
        switch (Size)
        {
            case 1:
                price += 1.20;
                break;
            case 2:
                price += 1.70;
                break;
            case 3:
                price += 2.10;
                break;
            default:
                Console.WriteLine("This option does not exist");
                ///how to return to the main menu here
                break;
        }
        Console.WriteLine("Would you like to buy more coffee?");
        String Response = Console.ReadLine().ToUpper();
        if (Response.StartsWith("Y"))
        {
            Console.Clear();
        }
        else
        {
            x += 1;
        }
    } 
Console.WriteLine("The total bill comes to £{0}", price.ToString("0.00"));
}

}

用以下內容替換您的注釋行: continue;

正如Nico Schertier所說,你可以通過以下方式實現這一目標:

int Size = -1;

while (Size == -1) {
    Console.WriteLine("Pick a coffee Size");
    Console.WriteLine("1: Small");
    Console.WriteLine("2: Medium");
    Console.WriteLine("3: Large");
    Size = int.Parse(Console.ReadLine());
    switch (Size)
    {
        case 1:
            price += 1.20;
            break;
        case 2:
            price += 1.70;
            break;
        case 3:
            price += 2.10;
            break;
        default:
            Size = -1;
            Console.WriteLine("This option does not exist");
            break;
    }
}

除了@ Abion47和@Dogu Arslan的答案,您還可以為您的菜單創建一個功能,也可以為您的開關創建一個功能。

在這個例子中,它將創建一個無限循環菜單

static void Menu()
{
    Console.WriteLine("Menu");
    Console.WriteLine("1) Take me to My fancy menu");
}
static void SwitchFunc(string input)
{
    switch (input)
    {
        case "1":
            Menu();
            string inputB = Console.ReadLine();
            SwitchFunc(inputB);
            break;
    }
}



static void Main(string[] args)
{
    Menu();
    string input = Console.ReadLine();
    SwitchFunc(input);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM