2012-01-26 69 views
0

「並非所有的代碼路徑返回一個值」這個塊爲什麼會拋出錯誤?

public BallData GetBall(String Name) 
    { 
     //Check each item in the list for the name. 
     foreach (BallData Item in _BallList) 
     { 
      //If the name matches, return the item to the caller and exit the loop. 
      if (Item.Name == Name) 
      { 
       return Item; 
      } 
      else 
      { 
       // Otherwise, throw an exception to indicate that the ball wasn't found. 
       throw new KeyNotFoundException("The ball name doesn't exist."); 
      } 


     } 
    } 
+4

你有沒有意識到這樣只會看第一在返回/拋出之前'_BallList'中的項? –

回答

5

更改爲:

foreach (BallData Item in _BallList) 
{ 
      //If the name matches, return the item to the caller and exit the loop. 
      if (Item.Name == Name) 
      { 
       return Item; 
      } 

    } 
    throw new KeyNotFoundException("The ball name doesn't exist."); 
+0

與問題代碼相同,如果'_BallList'爲空,則循環贏得'即使發生。 –

+3

@DidierGhys:不一樣! – Mithrandir

+2

@DidierGhys這就是爲什麼你扔「只是在最後才能找到它」。人們爲什麼低估這一點? –

2

如果_BallList爲空,則什麼都不會返回。

3

如果_BallList是空的,你永遠不會進入循環,因此該方法不代碼返回任何

相關問題