2016-03-06 110 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

在块的结尾处。

相关问题