【问题标题】:Array Equality Check Method数组相等检查方法
【发布时间】:2012-12-22 05:00:27
【问题描述】:

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

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

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

【问题讨论】:

    标签: arrays loops if-statement for-loop return


    【解决方案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;
    }
    

    【讨论】:

      【解决方案2】:

      您在 else 块之一内有 continue - 静态分析器无法推断传入的数组长度为 5,最终将到达 i=4

      假设您传递了两个大小相等的数组,每个数组大小为 2 - 然后您将点击 continue 两次并退出 for 循环 - 然后会返回什么?因此警告。

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

      【讨论】:

        猜你喜欢
        • 2016-12-24
        • 2018-09-22
        • 2014-09-03
        • 2012-12-16
        • 2011-04-15
        • 1970-01-01
        • 2020-02-12
        相关资源
        最近更新 更多