C# 方法调用后返回Null的全局声明变量

C# 方法调用后返回Null的全局声明变量,c#,oop,data-structures,linked-list,C#,Oop,Data Structures,Linked List,我正在尝试用C#创建一个LinkedList。我是新来的。你能帮我吗? 我试图做的是:我已经创建了节点类型head和lastNode变量,并试图通过GetLastNode()方法检查lastNode来将节点添加到以前的每个节点。尽管如此,每次我尝试添加第二个元素时,head在到达GetLastNode()时都会变为null。我不知道为什么会这样。请帮助我理解我遗漏的概念 class MyLinkedList { Node head, lastNode;

我正在尝试用C#创建一个LinkedList。我是新来的。你能帮我吗? 我试图做的是:我已经创建了节点类型head和lastNode变量,并试图通过
GetLastNode()
方法检查lastNode来将节点添加到以前的每个节点。尽管如此,每次我尝试添加第二个元素时,head在到达
GetLastNode()
时都会变为null。我不知道为什么会这样。请帮助我理解我遗漏的概念

class MyLinkedList
    {
        Node head, lastNode; 
        
        public void Add(int new_value)
        {
            Node new_node = new Node(new_value);                
            MyLinkedList obj = new MyLinkedList();
            lastNode = obj.GetLastNode();
            if(lastNode == null)
            {
                lastNode = new_node;
                this.head = new_node;
            }                  
            
            else
            {
                lastNode.next = new_node;
            }
        }
        public Node GetLastNode()
        {
            Node currentNode = this.head;
            if (currentNode == null)
                lastNode = currentNode;
            else
                while (currentNode != null)
                {
                    lastNode = currentNode;
                    currentNode = currentNode.next;
                }
            
            return lastNode;

        }
    }

head
lastNode
不是全局的,它们对于
MyLinkedList
的每个实例都是不同的。在
中,添加
您的a创建
MyLinkedList
的新实例(使用
new
关键字),该实例返回
GetLastNode()
null
,并将该
null
分配给当前
lastNode
,因此,对于当前的
lastNode
,您将在
之前使用
null
,如果

MyLinkedList obj=new MyLinkedList();
lastNode=obj.GetLastNode();
我想你可以删除这行

另外,似乎
GetLastNode
应该只返回
lastNode
,因为您已经在
Add
上执行了所有需要的跟踪:

public节点GetLastNode()
{
返回最后一个节点;
}

请向我们显示节点类别每次调用
Add()
时,您似乎都在创建一个新的链接列表。这是为什么?您的
head
字段不是全局的,它是
MyLinkedList
的属性,每次创建新的
MyLinkedList
,调用
GetLastNode()
将使用您的新
MyLinkedList
head
field@AbhaJha我很乐意帮忙!