public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
if (/*snip*/)
{
if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
else if ((/*snip*/) { return true; }
}
}
回答
沒有一個else
作爲一個包羅了所有剩餘的情況下,你需要添加一個return false;
下你的邏輯檢查。
public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
if (/*snip*/)
{
if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
}
return false;
}
DAFUQ im對不起,也許是因爲我在很高的時間以前就把它影響到了我的腦海裏:D rly Weed = Stupidity –
您未能在其他情況下,返回值:
public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
if (/*snip*/)
{
if (/*snip*/) { return true; }
else if (/*snip*/) { return true; }
else if ((/*snip*/) { return true; }
else{return false;}
}
else
{
return false;
}
}
如果這個解決方案通過了外部'if'評估並且隨後失敗了內部條件,它將不起作用。 – bporter
你是絕對正確的。編輯... –
你是不是經常返回值:
if (playerPositionM.Y <= groundPositionM.Y + groundM.Height && playerPositionM.Y > groundPositionM.Y)
{
if (playerPositionM.X < groundPositionM.X && (playerPositionM.X + playerM.Width < groundPositionM.X + groundM.Width && playerPositionM.X + playerM.Width > groundPositionM.X))
{
return true;
}
else if (playerPositionM.X + playerM.Width > groundPositionM.X + groundM.Width && (playerPositionM.X < groundPositionM.X + groundM.Width && playerPositionM.X > groundPositionM.X))
{
return true;
}
else if ((playerPositionM.X > groundPositionM.X && playerPositionM.X < groundPositionM.X + groundM.Width) && (playerPositionM.X + playerM.Width < groundPositionM.X + groundM.Width && playerPositionM.X + playerM.Width > groundPositionM.X))
{
return true;
}
else
{
// You need to return a value here:
}
}
else
{
// You need to return a value here:
}
etc!
我建議你做以下幾點:
public Boolean DetectPlayerAndGround1Collision2(/*snip*/)
{
bool result = false;
if (/*snip*/)
{
if (/*snip*/) { result = true; }
else if (/*snip*/) { result = true; }
else if (/*snip*/) { result =true; }
}
return result;
}
擁有單一返回狀態nt可以更簡單地跟蹤正在發生的事情,並確保它不在任何條件語句中,並在聲明時進行初始化,以確保始終返回值。
這個問題實際上源於另一個問題,這正是我所說的。乾杯。 –
我建議*反對*這樣做。如果檢查一個條件的結果不需要檢查其他條件,並且您的方法沒有其他任何操作,則從方法返回!我不同意「單點回報」的觀點。 –
@DanielMann同意有時候多重回報可能會更好。對於我而言,在上述情況下,您不會在原始代碼上添加任何開銷,但比添加其他else語句更加簡潔。最後一個單一的回報錯誤與上述一樣直截了當,但對於我(純粹的個人偏好),上述情況更爲清楚。 – JohnLBevan
以下:
if (A)
{
if (B) { return true; }
else if (C) { return true; }
else if (D) { return true; }
}
相當於:(假設任何情況下先前沒有返回暗示返回false任何值)
return A && (B || C || D);
這是一個很酷的解決方案。 –
- 1. 返回錯誤:不是所有的代碼路徑返回一個值
- 2. 錯誤:並非所有的代碼路徑返回一個值
- 3. 錯誤並非所有的代碼路徑返回一個值
- 4. 「不是所有的代碼路徑都返回一個值」
- 5. 不是所有的代碼路徑都返回一個值嗎?
- 6. 不是所有的代碼路徑都返回一個值
- 7. 不是所有的代碼路徑都返回一個值(JavaScript)
- 8. 「不是所有的代碼路徑都返回一個值」
- 9. 不是所有的代碼路徑都返回一個值
- 10. 不是所有的代碼路徑都返回一個值,
- 11. 錯誤「Survey.fillmydropdownlist()」:不是所有的代碼路徑返回一個值
- 12. 錯誤不是所有的代碼路徑都返回一個值。爲什麼?
- 13. Bool錯誤:「不是所有的代碼路徑都返回一個值」
- 14. C#錯誤不是所有的代碼路徑都返回一個值
- 15. 「不是所有的代碼路徑都返回一個值」錯誤BLL
- 16. C#錯誤 - 「不是所有的代碼路徑都返回一個值」
- 17. c#不是所有的代碼路徑返回一個值錯誤
- 18. 可達代碼,而不是所有的代碼路徑返回一個值
- 19. C#方法錯誤:檢測不到的代碼,而不是所有的代碼路徑返回一個值」
- 20. 不是所有的代碼路徑都有返回值
- 21. C#錯誤 - 並非所有代碼路徑返回值
- 22. 錯誤告訴並非所有的代碼路徑返回一個值
- 23. 獲取錯誤:並非所有的代碼路徑都返回一個值
- 24. C#...不是所有的代碼路徑返回值
- 25. C#不是所有的代碼路徑返回值
- 26. c#編譯器返回錯誤不是所有代碼路徑都返回一個值
- 27. 「並非所有的代碼路徑都返回一個值」C#
- 28. 功能並非所有的代碼路徑返回一個值
- 29. 並非所有的代碼路徑返回一個值:團結
- 30. 並非所有的代碼路徑都返回一個值sql
-1。缺少問題......以及錯誤信息中不清楚的解釋。 –
@AlexeiLevenkov FYI:標題中的解釋。 – JohnLBevan
@JohnLBevan這不是一個解釋,它只是說明錯誤信息是什麼。 – Servy