나는 학습을위한 2D 타워 방어 게임을 만들고 있어요, 나는이 자습서 다음 해요 :queue.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; }
}
:
http://xnatd.blogspot.com.br/2010/10/tutorial-9-multiple-waves.html
이가있는 코드가 전파 큐의 픽을 사용을 프로그래머 더 이상 파도가 큐에,이 충돌하지 않는 경우 그러나 문제는,이다 :
는"처리되지 않은 'System.InvalidOperationException'형식의 예외가 System.dll을,617 발생추가 정보 : 빈 대기열입니다. "
그리고 코드의 여러 부분에서이 메서드를 사용합니다. 나는 GET 전에 IF를 넣으려고했다 :
public Wave CurrentWave // Get the wave at the front of the queue
{
if (waves.Count >= 1)
{
get { return waves.Peek(); }
}
}
그러나 그것은 불가능한 것처럼 보인다. 내가 어떻게 해결할 수 있는지 모르겠다.
그것은 작동하지만 난 뭔가를 반환하도록 강요하고있어, 그래서 그것이 다른 사람에 null 또는 0을 반환했다 : '공공 웨이브 CurrentWave { GET { (waves.Count> = 1) { 경우를 return waves.Peek(); } else return null; } }' – ViNi
물론입니다. 신호 null을 반환하고 싶지 않고 null을 확인하려면 [Null 객체 패턴] (http://en.wikipedia.org/wiki/Null_Object_pattern)을 사용할 수 있습니다 (즉, Wave의 빈 인스턴스를 반환합니다. 수업) –