head
и lastNode
не являются глобальными, это поля , которые будут отличаться для каждого экземпляра MyLinkedList
. В Add
ваш a создает новый (с ключевым словом new
) экземпляр MyLinkedList
, который возвращает null
для GetLastNode()
и назначает этот null
текущему lastNode
, поэтому вы получите null
для вашего текущего lastNode
до if
:
MyLinkedList obj = new MyLinkedList();
lastNode = obj.GetLastNode();
Я бы сказал, вы можете просто удалить эти строки.
Также кажется, что GetLastNode
должен просто вернуть lastNode
потому что вы уже выполняете все необходимое отслеживание на Add
:
public Node GetLastNode()
{
return lastNode;
}