2017-02-22 30 views
0

我有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 .Thanks。

回答

2

List<int>是一个参考类型,就像T是。所以,当你的拷贝构造函数复制了原来的DataCount属性时,它不会复制值序列,而是复制原始的List<int>本身 - 所以很自然地,对其中一个的更改反映在另一个中。

更改您的复制构造函数以创建新的列表,但具有相同的原始成员。幸运的是,List<int>的构造函数接受一个现有的列表并使用其成员:

public T(T tempt) 
{ 
    DataCount = new List<int>(tempt.DataCount); 
} 
相关问题