关于类的引用问题。
一个链表的节点类
class ListNode<T>
{
private T data;
public T Data
{
get { return data; }
set { data = value; }
}
private ListNode<T> next;
internal ListNode<T> Next
{
get { return next; }
set { next = value; }
}
public ListNode(T val)
{
data = val;
next = null;
}
public ListNode(ListNode<T> p)
{
next = p;
}
public ListNode()
{
data = default(T);
next = null;
}
}
在链表中有一个头结点引用这个是这个节点的一个实例代表链表的开头。但是我们在遍历链表的时候通常会这么做
public void Append(T data)
{
ListNode<T> newNode = new ListNode<T>(data);
ListNode<T> currNode = null;
if (head == null)
{
head = newNode;
return;
}
//?currNode保存的到底是head的引用还是一个新的节点
currNode = head;
while (currNode.Next != null)
{
currNode = currNode.Next;
}
currNode.Next = newNode;
length++;
}
通过next属性来遍历整个链表,如上述代码一样。
One question:
类是引用类型,当把head的节点赋值给currNode时应该是把引用复制给currNode,更改currNode的值也就是更改head的值,但是在上诉代码中没有这个结果,当遍历完链表后head还是保存的头结点的引用。
但是如果这样:
ListNode<int> a = new ListNode<int>(12);
ListNode<int> b = a;
b.Data = 4;
那么当b节点的data属性改变时a节点的也改变了,这样才是符合引用类型的特征的。谁告诉我上面那个怎么回事,求大神。如果我问题说的不够详细的话请指出来我来补充
[解决办法]
说胆 --> 说明打字错误。