0

我有一种方法可以检查两个数组是否相等。

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;
        }
    }
}

但我有一个“并非所有代码都返回值”错误。有任何想法吗?

4

2 回答 2

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;
}
于 2013-01-08T10:59:54.020 回答
0

continue在其中一个else块内 - 静态分析器无法推断传入的数组长度为 5 并且i=4最终会达到。

想象一下,你传递了两个大小为 2 的相等数组——然后你会点击continue两次并退出for循环——然后会返回什么?因此发出警告。

要么放在return true;方法主体的末尾,要么修改你的算法。

于 2013-01-08T11:00:48.770 回答