- >错误'Minesweeper.Game.Gewonnen()':并非所有代码路径都返回一个值。
我做错了什么?
public bool Gewonnen()
{
for (int y = 0; y < _boolArray.GetLength(0); y++)
{
for (int x = 0; x < _boolArray.GetLength(1); x++)
{
if (_boolArray[x, y] == false)
return false;
else
return true;
}
}
}
答案 0 :(得分:8)
这意味着并非所有可能的执行路径都返回值。在您的示例中,循环可能不会执行一次(当_boolArray
长度为0时)并且如果发生这种情况,您的方法将不会返回任何内容。在方法结尾添加return false
:
public bool Gewonnen()
{
for (int y = 0; y < _boolArray.GetLength(0); y++)
{
for (int x = 0; x < _boolArray.GetLength(1); x++)
{
if (_boolArray[x, y] == false)
return false;
else
return true;
}
}
return false;
}
答案 1 :(得分:1)
gzaxx解决方案将编译。 无论如何,我不确定它是你想要的,因为在那种情况下它总会在第一次迭代后返回(如果有的话)。 这是另一种尝试(我希望它有所帮助):
public bool Gewonnen()
{
for (int y = 0; y < _boolArray.GetLength(0); y++)
{
for (int x = 0; x < _boolArray.GetLength(1); x++)
{
if (_boolArray[x, y] == false)
return false;
}
}
return true; //this mean _boolArray has no false value
}
答案 2 :(得分:0)
让我们假设您的第一个for循环在某些时候会是这样的:
for (int y = 0; y < _boolArray.GetLength(0); y++) { }
并且在那个时候你的_boolArray的长度为0.然后会导致
for (int y = 0; y < 0; y++) { }
这意味着它会立即完成这段代码,直到循环结束。但是等一下:这个函数应该返回一个布尔值,并且没有任何返回。
简而言之,“并非所有代码路径都返回值”意味着什么。您不允许有任何(不太可能的?)值组合,这些值会使您结束函数而不返回函数中类型mentoin的值(在这种情况下为boolean
)