我如何在没有参考的情况下从会话数据中复制?
How can i copy from Session Data without reference?
我有 Session object
,我如何在没有参考的情况下复制这个值。
var temp=new T(Session["Tdata"] as T);
temp.DataCount.RemoveAt(1);
我的 T class 是
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
。谢谢。
List<int>
是引用类型,就像 T
一样。因此,当您的复制构造函数复制原件的 DataCount
属性 时,它不是在复制值序列,而是在复制原件 List<int>
本身 - 所以自然地,对一个的更改会反映在另一个上。
更改您的复制构造函数以创建一个 new 列表,但具有相同的原始成员。幸运的是,List<int>
的构造函数接受现有列表并采用其成员:
public T(T tempt)
{
DataCount = new List<int>(tempt.DataCount);
}
我有 Session object
,我如何在没有参考的情况下复制这个值。
var temp=new T(Session["Tdata"] as T);
temp.DataCount.RemoveAt(1);
我的 T class 是
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
。谢谢。
List<int>
是引用类型,就像 T
一样。因此,当您的复制构造函数复制原件的 DataCount
属性 时,它不是在复制值序列,而是在复制原件 List<int>
本身 - 所以自然地,对一个的更改会反映在另一个上。
更改您的复制构造函数以创建一个 new 列表,但具有相同的原始成员。幸运的是,List<int>
的构造函数接受现有列表并采用其成员:
public T(T tempt)
{
DataCount = new List<int>(tempt.DataCount);
}