循环内的返回值未显示

时间:2012-06-28 14:04:30

标签: c# loops if-statement return

早上,简单的愚蠢问题。我发现有类似问题的帖子,但阅读后它并没有解决我的错误。

Return value from For loop

Can't get a return value from a foreach loop inside a method

方法:meth1 meth2 ect ....都返回一个值,但此刻我收到错误

“错误1'Proj5.Program.meth1(int)':并非所有代码路径都为每个方法返回一个值。

我的逻辑推测是它没有看到循环中的值? ......

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Proj5
{
class Program
{
    static void Main()
    {
        for (int i = 1; i < 101; i++)
        {
            if (i == 3 || 0 == (i % 3) || 0 == (i % 5) || i == 5)
            {
                Console.Write(meth1(i));
                Console.Write(meth2(i));
                Console.Write(meth3(i));
                Console.Write(meth4(i));
            }
            else
            {
                Console.Write(TheInt(i));
            }
        }
        Console.ReadLine();
    }

    static string meth1(int i)
    {
        string f = "fuzz";

        if (i == 3)
        {
            return f;
        }
    }
    static string meth2(int i)
    {
        string f = "fuzz";

        if (0 == (i % 3))
        {
            return f;
        }
    }
    static string meth3(int i)
    {
        string b = "buzz";

        if (i == 5)
        {
            return b;
        }

    }
    static string meth4(int i)
    {
        string b = "buzz";

        if (0 == (i % 5))
        {
            return b;
        }
    }
    static int TheInt(int i)
    {
        return i;
    }

}
}

3 个答案:

答案 0 :(得分:3)

你说你的方法应该返回一个字符串,但是如果我&lt;&gt; 3,你没有说应该返回什么。 顺便提一下,方法2和3有相同的问题(也是4)。 我不会谈论方法TheInt,这是......好笑;)

校正

static string meth1(int i)
    {
        string f = "fuzz";

        if (i == 3)
        {
            return f;
        }
        return null;//add a "default" return, null or string.Empty
    }

或更短

static string meth1(int i) {
    return (i == 3) ? "fuzz" : null/*or string.Empty*/;
}

答案 1 :(得分:0)

只有当if被评估为true时,才会返回您的函数。在if之外添加return语句,或者添加else语句,你的代码将编译并运行。

static string meth2(int i)
{
    string f = "fuzz";

    if (0 == (i % 3))
    {
        return f;
    }
    else
      return "";
}

答案 2 :(得分:0)

当你声明一个方法返回一个值时(对于meth1等),你应该遵守这个声明。

如果不满足内部条件,您的方法不会返回任何内容。 编译器会注意到这一点并向您抱怨

您应确保每个可能的执行路径都将调用方法中的内容返回给调用者。

例如

static string meth3(int i)     
{         
    string b = "buzz";          
    if (i == 5)         
    {             
        return b;         
    }      
    // What if the code reaches this point?
    // What do you return to the caller?
    return string.Empty; // or whatever you decide as correct default for this method
}