1
            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 が空であることをプログラムに確認させるにはどうすればよいですか? 空であるため、例外がスローされます:(

4

1 に答える 1

2

LastOrDefaultシーケンスが空の場合に null を返す which を使用できます。次に、null をチェックします。

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

また、invaderByLocationX を null にすることはできないため、null チェックインは不要であることに注意してください。

于 2011-04-17T10:01:24.627 に答える