Jos*_*osh -3 c# for-loop return-value unreachable-code
我试图找出一个数字是否为素数.但是我遇到了"检测到无法访问的代码"的错误,我认为这会影响"并非所有代码路径返回值"的错误.错误似乎发生在i ++的for循环中.有人可以帮我吗?
static void Main(string[] args)
{
Console.WriteLine(isPrime(10));
}
public static bool isPrime(int n)
{
for (int i = 2; i < n; i++)
{
if (n % i == 0)
{
return false;
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
Mik*_*keH 10
"检测到无法访问的代码"意味着永远无法执行某些代码.考虑:
int something()
{
if (true)
return 1;
else
return 2; //Obviously we can never get here
}
Run Code Online (Sandbox Code Playgroud)
"并非所有代码路径都返回值"意味着您已经定义了一个带有返回值的方法(例如示例中的"bool"),并且有一些方法可以在不返回值的情况下执行该方法.
考虑:
int something(bool someBool)
{
if (someBool)
return 1;
//if someBool == false, then we're not returning anything. Error!
}
Run Code Online (Sandbox Code Playgroud)
Your code has two problems:
您return true在 for 循环内(在任何条件之外)。因为return立即退出函数(将控制权返回给调用者)i++,for循环语句永远不会被执行(因此是你的错误)。您可能打算将其置于 for 循环之外。
循环中的另一个问题是循环不能保证执行。如果n传递的是 2 或更少,您将完全跳过循环,并且在这种情况下没有 return 语句。这是不允许的(因为您总是需要从非 void 函数返回一个值),因此您会收到编译器错误。