为什么将类变量的值分配给另一个变量时不改变?

时间:2019-12-31 06:22:49

标签: c# object data-structures reference conceptual

我正在通过解决Hackerrank上的问题来重提一些核心的CS概念。我正在尝试解决Insert a node at the tail of linked list。最初,我提交了此解决方案,但给了我错误的答案:

static SinglyLinkedListNode insertNodeAtTail(SinglyLinkedListNode head, int data) {

    var item = new SinglyLinkedListNode(data);
    if(head == null) {
        head = item;
        return head;
    }
    while(head.next != null){
        head = head.next;
    }
    head.next = item;
    return head;

}

然后,我更改实现,并将head分配给temp变量以插入节点并通过它:

static SinglyLinkedListNode insertNodeAtTail(SinglyLinkedListNode head, int data) {

    var item = new SinglyLinkedListNode(data);
    if(head == null) {
        head = item;
    }
    else {
        var temp = head;
        while(temp.next != null) {
            temp = temp.next;
        }
        temp.next = item;
    }
    return head;        
}

但是,这让我有些困惑。如果我将head复制到临时变量,那意味着我将head的引用复制到变量。现在,如果我要迭代该温度变量,即设置temp = temp.next,那么我将更改temp和head的参考。那么head的值如何不变?我的意思是,就我所担心的以下两种解决方案应该以相似的方式工作。

0 个答案:

没有答案