我有以下代码:
public static int Number()
{
bool done = false;
while (done == false)
{
try
{
string[] numbers = { "1", "2", "3", "4", "5", "6" };
Console.WriteLine("Enter a number");
int x = int.Parse(Console.ReadLine());
Console.WriteLine(numbers[x]);
Console.ReadLine();
return x;
done = true;
}
catch
{
Console.WriteLine("can't");
}
}
}
我收到错误:
在' done = true;'。
中检测到无法访问的代码
我假设这与catch语句有关,但为什么会这样呢?我无法在这里解决错误。
答案 0 :(得分:1)
无法联系到return
后面的行。请参阅代码中的评论:
public static int Number()
{
bool done = false;
while (done == false)
{
try
{
string[] numbers = { "1", "2", "3", "4", "5", "6" };
Console.WriteLine("Enter a number");
int x = int.Parse(Console.ReadLine());
Console.WriteLine(numbers[x]);
Console.ReadLine();
return x; //THIS IS PREVENTING THE NEXT LINE
done = true;
}
catch
{
Console.WriteLine("can't");
}
}
}
return语句终止执行它的方法 出现并将控制权返回给调用方法。它也可以回归 可选值。
答案 1 :(得分:1)
在循环退出后你实际上需要在while循环之外返回而不是从while
循环中返回,只要while
循环中断,它将返回{{1}的值保持值}:
x
另一个建议是,您可以简化public static int Number()
{
bool done = false;
int x = 0;
while (done == false)
{
try
{
string[] numbers = { "1", "2", "3", "4", "5", "6" };
Console.WriteLine("Enter a number");
x = int.Parse(Console.ReadLine());
Console.WriteLine(numbers[x]);
Console.ReadLine();
done = true;
}
catch
{
Console.WriteLine("can't");
}
}
return x;
}
循环条件,如:
while
答案 2 :(得分:0)
您无法在return
后找到一行。
在你的情况下这一行:
Console.ReadLine();
return x; <---
done = true;