InvalidOperationException (последовательность, не содержащая элементов - PullRequest
1 голос
/ 17 апреля 2011
            List<Invaders> invadersShooting = new List<Invaders>();
        Invaders invaderA=new Invaders();
    try
            {
        var invaderByLocationX = from invadersSortByLocation in invaders
                                 group invadersSortByLocation by invadersSortByLocation.Location.Y
                                 into invaderGroup
                                 orderby invaderGroup.Key
                                 select invaderGroup;

        if (invaderByLocationX != null)
        {

                invadersShooting = invaderByLocationX.Last().ToList();// it is being throwing constantly here.. How can i prevent it from being thrown

                invaderA = invadersShooting[r.Next(0, invadersShooting.Count)];




                if (r.Next(5) < 4 - randomShot)
                {
                    Invadershots.Add(new Shot(invaderA.Location, Direction.DOWN, gameBoundaries, WEAPON.DEFAULT, isWeapon));
                }
        }
            }
    catch (Exception e)
    { }
    }

Как я могу предотвратить возникновение ошибки?Как я могу заставить программу проверить, что invaderByLocationX пуст?потому что он пустой, поэтому выбрасывается исключение: (

1 Ответ

2 голосов
/ 17 апреля 2011

Вы можете использовать LastOrDefault, который вернет ноль, если последовательность пуста. Затем вы захотите проверить на ноль.

var invader = invaderByLocationX.LastOrDefault();
if(invader == null)
{
    // do something
}
else
{
    invaderA = invadersShooting[r.Next(0, invadersShooting.Count)];
    // etc
}

Также обратите внимание, что invaderByLocationX никогда не может иметь значение null, поэтому проверка на нулевое значение не требуется.

...