2012-01-26 2 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 пуст, вы никогда не получите в петлю и, таким образом, метод не возвращает ничего

Смежные вопросы