我不断收到标题中指定的错误,但无论如何都会返回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;
}
答案 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语句终止执行它的方法 出现并将控制权返回给调用方法。它也可以回归 可选值。如果方法是 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;
}