并非所有代码路径都返回值?

时间:2013-02-16 18:12:04

标签: c# return

我不断收到标题中指定的错误,但无论如何都会返回l的值。这是什么问题?如果没有变化,我有一个else语句来处理out:

    public int validate(int zip, int i, out int l)
{
    if ((zip < 10000) || (zip > 99999))
    {

        Console.WriteLine("Input not accepted. Zips are 6-digits long.");
        error = true;

    }
    else {
        listzip[i] = zip;
        error = false; }

    for (int g = 1; (g <= (i - 1)); g++)
    {
        if (listzip[i] == listzip[g])
        {
            Console.WriteLine("Repeated zip detected, please re-enter.");
            if (!error) error = true;
        } else error = false;
    }


    if (error)
    {
        l = i--; // forces a step back if an error was detected
    }else l = i;
}

3 个答案:

答案 0 :(得分:4)

您的方法的返回类型为int,因此您需要从方法中返回int值。您应该使用return语句返回值(see the link

如果方法的签名是public void validate(...),则不需要return语句。

答案 1 :(得分:1)

您的方法返回类型为int,但在您的方法中没有返回值

如果您不想从方法中返回任何值,请将返回类型定义为void。等;

public void validate(int zip, int i, out int l)
{
  // No need return statement
}

MSDN

查看 return 语句
  

return语句终止执行它的方法   出现并将控制权返回给调用方法。它也可以回归   可选值。如果方法是 void 类型,则返回语句   可以省略。

答案 2 :(得分:1)

声明您的方法,C#编译器希望您return具有int值。但是从代码的外观来看,您可能希望返回类型为void而不是int

public void validate(int zip, int i, out int l)
{
    if ((zip < 10000) || (zip > 99999))
    {
        Console.WriteLine("Input not accepted. Zips are 6-digits long.");
        error = true;
    }