如何摆脱这个错误:不是所有的代码路径都返回一个值?
How to get Rid of this error: not all code paths return a value?
错误:*Assets/Scripts/Chess/Bishop.cs(237,22):错误 CS0161:`Bishop.search(string[][], int, string)':并非所有代码路径都返回值*
推荐答案如果找不到 x,请计算出您希望发生的情况,并在方法结束时返回该结果.例如:
Work out what you want to happen if you never find x, and return that at the end of the method. For example:
// Fixed naming conventions and indentation... // Why do we need n here at all? Why not just use the length of the array? int Search(string[][] mat, int n, string x) { //set indexes for top right element for (int i = 0; i < n; i++) { // Why are we looking backwards here? for (int j = n - 1; j >= 0; j--) { if (mat[i][j] == x) { // More readable formatting... Debug.Log(string.Format("{0} found at {1}, {2}", x, i, j)); return i; } } } // Not found: return -1 to indicate failure. Or you could throw an exception return -1; }更一般地说:编译器错误消息在这里相当清楚 - 有一种方法可以让您在不返回任何内容的情况下到达方法的末尾.值得退后一步,试着想想为什么你不能自己解决这个问题.您是否足够注意编译器错误消息?在所有情况下,您是否已经完成了该方法可能做的所有事情?下次你怎么能更好地处理这个问题?
More generally: the compiler error message was reasonably clear here - there was a way that you could get to the end of the method without returning anything. It's worth taking a step back and trying to think about why you couldn't work this out yourself. Did you pay enough attention to the compiler error message? Had you though through everything the method might do, in all situations? How could you handle this better next time?
更多推荐
如何摆脱此错误:并非所有代码路径都返回值?
发布评论