我有一种方法来检查两个数组是否相等。
private bool CheckArray(int[] ilk_dizi, int[] son_dizi)
{
for (int i = 0; i < 5; i++)
{
if (ilk_dizi[i]==son_dizi[i])
{
if (i==4)
{
return true;
}
else
{
continue;
}
}
else
{
return false;
}
}
}
但我有一个“并非所有代码重写值”错误。任何想法?
答案 0 :(得分:1)
你有可能“不归路” 在使用continue时要小心,很多时候它并不是必需的。
尝试按如下方式优化代码
private bool CheckArray(int[] ilk_dizi, int[] son_dizi)
{
for (int i = 0; i < 5; i++)
{
if (ilk_dizi[i]!=son_dizi[i])
{
return false;
}
}
return true;
}
答案 1 :(得分:0)
continue
块中有一个else
- 静态分析器无法推断传入的数组长度为5,最终会到达i=4
。
想象一下,你传递了两个相等的数组,每个数组大小为2 - 然后你会两次点击continue
并退出for
循环 - 那么将返回什么?因此警告。
将return true;
放在方法正文的末尾,或修改算法。