如何防止queue.Peek()中的空队列异常?

时间:2015-01-20 18:23:17

标签: c# methods queue peek

我正在制作用于学习的2D塔防游戏,并且我正在学习本教程:

http://xnatd.blogspot.com.br/2010/10/tutorial-9-multiple-waves.html

那里的代码使用wave队列中的Peek:

public Wave CurrentWave // Get the wave at the front of the queue

{
    get { return waves.Peek(); }
}

public List<Enemy> Enemies // Get a list of the current enemeies

{
    get { return CurrentWave.Enemies; }
}

public int Round // Returns the wave number

{
    get { return CurrentWave.RoundNumber + 1; }
}

但问题是,当队列中没有更多波浪时,它会崩溃:

&#34;未处理的类型&#39; System.InvalidOperationException&#39;发生在System.dll中 附加信息:空队列。&#34;

它在代码的多个部分中使用此方法。我试着在GET之前放置一个IF,如:

    public Wave CurrentWave // Get the wave at the front of the queue

    {
        if (waves.Count >= 1)
       {
        get { return waves.Peek(); }
       }
    }

但似乎不可能。我不知道如何解决它。

1 个答案:

答案 0 :(得分:1)

只需放置你的&#39;如果&#39; 方法体内,它会很好

该方法以&#39; get {&#39;并以&#39;}结束。那个东西叫做属性getter。

public Wave CurrentWave // Get the wave at the front of the queue
{    
    get 
    { 
       if (waves.Count >= 1)
       {
          return waves.Peek(); 
       }
       else
       {
          return null;
       }
    }
}

然后,修改另外两个getter以检查CurrentWave是否为null,然后返回null。