0
したがって、私のコードは基本的にリンクリストを設定します。各チケットオブジェクトは、別のチケットオブジェクトへの参照、またはnullを格納します。 .getNext()メソッドは、リスト内の次のオブジェクトへの参照を取得します。 currentはリストの開始を表すオブジェクトであり、whileループは条件が変化するまで電流を変更するリストを通過します。最後に、パラメータとして渡されたTicketに現在の値を設定します。NullReferenceExceptionが発生しますが、オブジェクトがnullではありません
public void AddLowPTicket(Ticket ti) // doesnt check if front == null because AddTicket already does
{
Ticket current = front;
while(current.getPrio() == Priority.High && current != null) // cycles/skips through the list as long as Priority == High.
{
current = current.getNext();
}
current.Print(); // *THIS WORKS*
while(current != null && current.getPrio() == Priority.Low) // *NullReferenceException: Obj ref not set to an instance of an obj.*
{
current = current.getNext();
}
current = ti;
}
これはTicketオブジェクトのPrintメソッドです。これは、ローカル変数を正常に出力します。つまり、nullではありません。
public void Print()
{
Console.WriteLine("{0}\nPriority:{1}", m_description, m_prio == Priority.High ? "High" : "Low");
}
currentがnullでなく、その変数のいずれもが存在しない場合、なぜクラッシュしますか?
'current.getPrio()== Priority.High && current!= null'左右にスワップしてみます。 – AlexD
@AlexD:どのように問題を解決するのですか? @ N.Campos: 'getPrio()'の内部で何が起きているのですか –
あなたはあなたが言っている行で起きているのでしょうか? AlexDのコメントによって解決される最初の 'while 'におそらく起きているように見えます。デバッガは何を言っていますか?例外が発生するのを待って、関連する変数を調べます。 – Rob