它表示并非所有代码路径都返回值
private string Fisrt(string nonTerminal)
{
for (int j = 0; j < 6; j++)
{
if (Tokens[j, 0] == nonTerminal)
{
if (char.IsLower((char)Tokens[j, 3][0]))
return (Tokens[j, 3]);
else
Fisrt(Tokens[j, 3]);
}
}
}
答案 0 :(得分:1)
例如,如果Tokens[j, 0]
(j
的值为0到5)都不是nonTerminal
,该怎么办?
或者,如果Tokens[j, 3][0]
永远不会小写?
答案 1 :(得分:1)
private string Fisrt(string nonTerminal)
{
for (int j = 0; j < 6; j++)
{
if (Tokens[j, 0] == nonTerminal)
{
if (char.IsLower((char)Tokens[j, 3][0]))
return (Tokens[j, 3]);
else
return Fisrt(Tokens[j, 3]);
/* ^ add a return here */
}
}
return SOMETHING;
/* ^ You also need to add some return value here */
}
您还需要确定在for
循环正常退出的情况下要返回的字符串值(或null)。
答案 2 :(得分:1)
您应该返回递归步骤
`return First(Tokens[j, 3])`
并处理外部for
和if
以外的案例。