2017-02-02 6 views
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でなく、その変数のいずれもが存在しない場合、なぜクラッシュしますか?

+1

'current.getPrio()== Priority.High && current!= null'左右にスワップしてみます。 – AlexD

+0

@AlexD:どのように問題を解決するのですか? @ N.Campos: 'getPrio()'の内部で何が起きているのですか –

+1

あなたはあなたが言っている行で起きているのでしょうか? AlexDのコメントによって解決される最初の 'while 'におそらく起きているように見えます。デバッガは何を言っていますか?例外が発生するのを待って、関連する変数を調べます。 – Rob

答えて

-2

皆さん、ありがとうございます。私はそれが正しく(何とか?)構築されなかったと思います。追加した後にいくつかの行を削除し、再構築/実行すると正常に実行されました!申し訳ありません、もう一度ありがとうございます!

関連する問題