避免在 C# 中使用 goto 语句

Avoid goto statement in C#

我不想使用某种 goto 语句,但我希望用户在执行默认情况时 return 到主菜单。如何??我知道这是一个简单的问题,但肯定有很多新手遇到过类似的问题。

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);

}