在下面的代码段中,我对“当前”对象进行了更改,该对象是“ head”对象的副本。但是,更改会反映到全局head对象。
class Node
{
public Node next; //pointer
public Object data; //data
public Node(Object d)
{
data = d;
}
}
public class CustomLinkedList
{
private Node head = new Node(null); //head of linked list
public void Add(Object data)
{
Node newNode = new Node(data);
Node current = head;
while (current.next != null)
{
current = current.next;
}
current.next = newNode;
}
}
答案 0 :(得分:1)
原因是-类是引用类型。
引用类型是一种类型,其值是对适当数据的引用而不是对数据本身的引用。这就是为什么更改一个对象也会更改其他对象的原因。
阅读这些-http://www.yoda.arachsys.com/csharp/parameters.html
http://www.albahari.com/valuevsreftypes.aspx
解决方案是对要考虑的对象进行深度克隆。