2017-02-02 14 views
0

Так что мой код в основном создает связанный список. Каждый объект билета либо сохраняет ссылку на другой объект билета, либо null. Метод .getNext() получает ссылку на следующий объект в списке. current - это объект, представляющий начало списка, а циклы while проходят через список, изменяющий ток до тех пор, пока условия не изменятся. Наконец, он устанавливает ток в Билет, который был передан как параметр.Я получаю исключение NullReferenceException, но объект не является нулевым

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; 
} 

Это метод печати объекта Билета. Он печатает локальные переменные просто отлично, а это значит, что они не равны нулю.

public void Print() 
{ 
    Console.WriteLine("{0}\nPriority:{1}", m_description, m_prio == Priority.High ? "High" : "Low"); 
} 

Почему он падает, если ток не равен нулю, и ни одна из его переменных не является.

+1

'current.getPrio() == Priority.High && current! = Null' Попробуйте поменять местами влево и вправо. – AlexD

+0

@AlexD: Как это решит проблему? @ N.Campos: что происходит внутри 'getPrio()' –

+1

Вы уверены, что это происходит на линии, о которой вы говорите? Похоже, что это, вероятно, происходит на первом 'while' - это будет решено комментарием AlexD. Что говорит ваш отладчик? Подождите, пока он попадет в исключение и проверит соответствующие переменные. – Rob

ответ

-2

Привет, ребята, большое спасибо за ваше время! Наверное, это не правильно построено (как-то?). После того, как вы добавили, затем удалили некоторые строки, а затем перестроили/запустили, он работал правильно! Извините, и еще раз спасибо!