代码之家  ›  专栏  ›  技术社区  ›  Tvde1

并非所有代码路径都返回带有while循环的值[重复]

  •  0
  • Tvde1  · 技术社区  · 8 年前

    编译器正在抱怨以下代码段不会总是返回。我已经检查过了,没有发现问题。

    private int MyFunction(int b)
    {
        int result = -1;
    
        while (result != 1)
        {
            result = MySmallFunction(out var x);
    
            if (result == 1)
            {
                return x;
            }
        }
    }
    
    private int MySmallFunction(out int x)
    {
        x = 1;
        return 1;
    }
    

    MySmallFunction 1 意思是成功,剩下的是一个错误代码。

    如果它回来了 1个 ,这意味着 out int x 如果返回值不是 1个 (错误代码),然后我要重试。

    mysmall函数 永不回头 1个

    3 回复  |  直到 8 年前
        1
  •  1
  •   Tvde1    8 年前

    我将函数重写为:

    private int MyFunction()
    {
        int result = -1;
        int x = int.MinValue;
    
        while (result != 1)
        {
            result = MySmallFunction(out x);
        }
    
        return x;
    }
    
    private int MySmallFunction(out int x)
    {
        x = 1;
        return 1;
    }
    

    现在 x 只有在 MySmallFunction 返回状态代码 1 .

        2
  •  0
  •   Prodigle    8 年前

        3
  •  0
  •   sujith karivelil    8 年前

    根据方法签名 MyFunction() 它应该在所有条件下都返回一个值给调用方法。但是在你的例子中,你只返回一个值 if (result == 1)

    private int MyFunction(int b)
    {
        int result = -1;
    
        while (result != 1)
        {
            result = MySmallFunction(out var x);
    
            if (result == 1)
            {
                return x;
            }
        }
        return 0;
    }