我正在制作用于学习的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(); }
}
}
但似乎不可能。我不知道如何解决它。
答案 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。