1

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

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

3 回答 3

4

您的方法的返回类型是int,因此您需要从您的方法中返回一个int值。您应该使用该return语句返回值(请参阅链接

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

于 2013-02-16T18:14:09.863 回答
1

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

如果您不想从您的方法返回任何值,请将您的返回类型定义为void. 像;

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

签出return statement fromMSDN

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

于 2013-02-16T18:15:43.823 回答
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;
    }
于 2013-02-16T18:18:21.400 回答