我有Session object
,如何在没有参考的情况下复制此值。
var temp=new T(Session["Tdata"] as T);
temp.DataCount.RemoveAt(1);
我的T班是
public T()
{
DataCount=new List<int>();
}
public T(T tempt)
{
DataCount=tempt.DataCount;
}
public List<int> DataCount{get;set;}
当我从temp.Its中移除DataCount
时,也会从Session["Tdata"]
移除。我不想将其从Session.Google中删除,因为reference type
会导致它。谢谢。
答案 0 :(得分:2)
List<int>
是一种引用类型,就像T
一样。因此,当您的复制构造函数复制原始的DataCount
属性时,它不会复制值序列,而是复制原始List<int>
本身 - 所以很自然地,对一个的更改会反映在另一个中。
更改您的复制构造函数以创建新列表,但具有相同的原始成员。幸运的是,List<int>
的构造函数接受现有列表并接受其成员:
public T(T tempt)
{
DataCount = new List<int>(tempt.DataCount);
}