无法访问的代码 Visual Studio C# do while 循环

本文关键字:do while 循环 Studio Visual 访问 代码 | 更新日期: 2023-09-27 18:30:26

我正在尝试编写代码(在Visual Studio 2012中使用c#),允许用户使用1,2,3或4选择帐户。 我正在使用 do-while 循环,所以我可以使用 0 退出(中断?)或再次运行循环,直到选择有效选项。

问题是,Visual Studio告诉我代码validAccount = true;无法访问,并且不让我测试它。 由于此方法也应该返回一个值,因此我有一个"并非所有代码路径都返回值"错误,我真的很困惑。 这是我的代码:

    static int chooseAccount() {
        bool validAccount = false;
        do {
            Console.Clear();
            Console.WriteLine("Select an Account: 'r'n 1: Savings 'r'n 2: Debit 'r'n 3: Credit 'r'n 4: Investment");
            int inputNumber = int.Parse(Console.ReadLine()); //by declaring int inputNumber here we save having an extra line.
            if ((inputNumber >= 1) && (inputNumber <= 4)) {
                return inputNumber;
                validAccount = true;
            }
            else if (inputNumber == 0) {
                break;
            }
            else {
                Console.WriteLine("Error: please choose an account using 1, 2, 3, 4 or 0 to exit");
            }
        } while (!validAccount);
    }//end chooseAccount

也许我只是盯着这个太久了,看不到我所犯的简单错误。我欢迎一个新的视角或方向,如果这类问题已经解决,我可以找到解决方案。(当代码必须如此具体时,很难在谷歌上搜索"无法访问的代码"之类的东西......

无法访问的代码 Visual Studio C# do while 循环

带有错误的行紧跟在 return 语句之后。在每种情况下(编译器都知道这一点),您的代码都会在它前面的行上退出函数,因此它永远不会到达下一行。

您无需将validAccount设置为 true 即可中断循环,因为 return 语句将退出函数,因此会自动退出循环。

最后,如果您将validAccount设置为 true 并返回,则没有其他函数可以访问 validAccount ,那么为什么您需要费心将其设置为 true?

事实上,你根本不需要validAccount,因为有了你的breakreturn语句,你已经控制了进出循环的方式。这将起作用:

static int chooseAccount() {
    while(true) {
        Console.Clear();
        Console.WriteLine("Select an Account: 'r'n 1: Savings 'r'n 2: Debit 'r'n 3: Credit 'r'n 4: Investment");
        int inputNumber = int.Parse(Console.ReadLine());
        if ((inputNumber >= 0) && (inputNumber <= 4)) {
            return inputNumber;
        }
        else 
        {
            Console.WriteLine("Error: please choose an account using 1, 2, 3, 4 or 0 to exit");
        }
    }
}

请注意,return语句将立即使您退出函数。那么下一个validAccount = true;将永远不会被执行!

切换这两个:

return inputNumber;
validAccount = true;