2017-02-22 11 views
0

私はSession objectを持っていますが、どのように参照せずにこの値をコピーできますか?私はtemp.ItsからDataCountを削除するとセッションデータを参照せずにコピーする方法はありますか?

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

でもSession["Tdata"] .Iから削除Session.Googleからそれを削除したくないのでreference type .Thanks、それが原因と言います。

答えて

2

List<int>は参考タイプです。Tと同じです。したがって、コピーコンストラクタが元のDataCountプロパティをコピーするとき、それは値のシーケンスをコピーしていないので、元のList<int>自体をコピーしています - したがって当然ながら、一方への変更は他方に反映されます。

新しいリストを作成するようにコピーコンストラクタを変更しますが、元のメンバは同じです。幸いにも、List<int>のコンストラクタは既存のリストを受け入れ、そのメンバーを受け取ります:

public T(T tempt) 
{ 
    DataCount = new List<int>(tempt.DataCount); 
} 
関連する問題