C# visual studio c do while循环中无法访问的代码
我试图在visual studio 2012中使用c编写代码,允许用户使用1、2、3或4选择帐户。我正在使用do while循环,以便可以使用0退出break?或者再次运行循环,直到选择有效选项 问题是,VisualStudio告诉我代码validAccount=true;无法访问,不让我测试它。因为这个方法也应该返回一个值,所以我有一个错误,不是所有的代码路径都返回一个值错误,我真的很困惑。这是我的密码:C# visual studio c do while循环中无法访问的代码,c#,visual-studio-2012,do-while,C#,Visual Studio 2012,Do While,我试图在visual studio 2012中使用c编写代码,允许用户使用1、2、3或4选择帐户。我正在使用do while循环,以便可以使用0退出break?或者再次运行循环,直到选择有效选项 问题是,VisualStudio告诉我代码validAccount=true;无法访问,不让我测试它。因为这个方法也应该返回一个值,所以我有一个错误,不是所有的代码路径都返回一个值错误,我真的很困惑。这是我的密码: static int chooseAccount() { boo
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
也许我只是盯着这个看太久了,看不出我犯了什么简单的错误。如果这类问题已经解决,我欢迎从新的角度或方向找到解决方案。当代码必须非常具体时,谷歌很难搜索到诸如无法访问的代码之类的东西…切换这两种:
return inputNumber;
validAccount = true;
请注意,return语句会立即将您带出函数。然后下一个validAccount=true;永远不会被处决 带有错误的行正好位于return语句之后。在任何情况下,如果编译器知道这一点,代码都会在函数的前一行退出函数,因此它永远不会到达下一行 您不需要将validAccount设置为true来中断循环,因为return语句将退出函数,从而自动退出循环 最后,如果您将validAccount设置为true,然后返回,那么没有其他函数可以访问validAccount,那么为什么您需要麻烦将其设置为true呢 事实上,您根本不需要validAccount,因为通过break和return语句,您已经可以控制循环的进出。这将有助于:
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语句return inputNumber后的行;不会被处决的。您不需要设置validAccount,因为当您从函数返回时,其值会从堆栈中消失。由于您正在返回或从循环中断,因此整个validAccount逻辑无论如何都是冗余的。谢谢大家的快速回复!很快就解决了那个问题!我仍然有一个错误,不是所有的代码路径都返回一个值,但是,有什么见解吗?请检查我的答案以修复该错误。没有理由设置validAccount。函数返回后,您无法访问validAccount。谢谢,这解决了一个问题!但是,我仍然收到一个“并非所有代码路径都返回值”错误,我无法运行以测试它。此代码避免了“并非所有代码路径也返回值”,但返回0。您必须将代码配置为处理返回的0。以前,如果用户输入0,您就中断了循环,然后循环后没有代码,因此函数将命中结尾的大括号,而不返回任何内容。函数在声明返回类型时总是必须返回一个值,因此编译器会抛出一个错误。谢谢,这真的很有帮助!正是我需要的!没问题。祝你的节目好运!