0

2つの配列が等しいかどうかを確認する方法があります。

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ブロックの 1 つの中にあります。静的アナライザーは、渡された配列が 5 の長さであり、最終的に到達するelseと推測できません。i=4

それぞれサイズ 2 の 2 つの等しい配列を渡したと想像してください。2 回ヒットしてループcontinueを終了すると、何が返されるのでしょうか。forしたがって、警告。

メソッド本体の最後に置くかreturn true;、アルゴリズムを修正してください。

于 2013-01-08T11:00:48.770 に答える