2016-03-06 109 views
-1

我已經在類中聲明瞭一個方法來比較兩個數字,我遇到了一個問題。我收到一個錯誤,說不是所有的代碼路徑都返回一個值。我想要爲char數組中的每個匹配數字返回一個int。 Here is an image of the code.並非所有的代碼路徑都返回一個值c#

public int CompareCodes(string rndselect, string personselect) 
{ 
    char[] rndnumber = rndselect.ToCharArray(); //take the randoms elected one and convert it to a char array 
    char[] perNum = personselect.ToCharArray(); 
    likeness0 = 0; 
    likeness1 = 1; 

    foreach (char RndNum in rndnumber) 
    { 
     foreach (char Pnum in perNum) 
     { 
      if (RndNum == Pnum) 
      { 
       return likeness1; 
      } 
      else 
      { 
       return likeness0; 
      } 
     } 
    } 
} 
+2

[C#錯誤:並非所有代碼路徑都返回一個值]的可能重複(http://stackoverflow.com/questions/19903404/c-sharp-error-not-all-code-paths-return-a-value ) –

+0

嗨,詹姆斯。在發佈您的問題之前,您會看到一些與您的問題類似的問題。像這樣的簡單問題通常已經被問及和回答。 –

+0

您的'int CompareCodes'方法必須返回值,因爲可能您的foreach不會永遠運行! – Behzad

回答

4

應該怎樣編譯想,如果你perNum是空的?

+1

簡短,但到了(+1)點。另一個陣列也適用。 – Heinzi

3

錯誤說明你的代碼到底出了什麼問題。擁有foreach循環並不能保證foreach內部的任何內容都被執行。如果rndnumberperNum恰好爲空,則沒有任何東西可以循環使用,並且您的代碼實際上不會返回任何內容。

0

如果rndselectperNum是空字符串。 所以沒有返回值。

如果您確定這些字符串始終不爲空。所以添加

return 0

在塊的結尾處。

相關問題