2013-02-16 138 views
1

我不斷收到標題中指定的錯誤,但似乎無論如何都會返回l的值。這裏有什麼問題?我有一個else語句來處理了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; 
} 
+3

你的方法的返回類型爲int,但代碼中沒有'return'語句。 – dtb 2013-02-16 18:13:09

+0

dtb說什麼。我認爲這個混淆源於你使用out參數的事實,並且你認爲設置和返回值是一樣的。不是這樣。 – 2013-02-16 18:31:39

回答

4

你的方法的返回類型爲int,所以你需要從方法返回一個int值。您應該使用return聲明返回值(see the link

如果方法的簽名是public void validate(...)則不需要return聲明。

1

您的方法返回類型是int,但在您的方法中沒有返回值

如果您不想從您的方法中返回任何值,請將您的返回類型定義爲void。喜歡;

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

退房聲明從MSDN

return語句終止於它 出現並將控制返回給調用方法的方法的執行。它也可以返回 一個可選值。如果方法是void類型,則可以省略返回語句 。

1

您的方法被聲明爲C#編譯器期望returnint值。但從代碼的外觀來看,您可能希望返回類型爲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; 
    } 
相關問題