我如何在没有参考的情况下从会话数据中复制?

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);
}