Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在没有引用的情况下复制会话数据?_C#_Asp.net_Session_Clone - Fatal编程技术网

C# 如何在没有引用的情况下复制会话数据?

C# 如何在没有引用的情况下复制会话数据?,c#,asp.net,session,clone,C#,Asp.net,Session,Clone,我有会话对象,如何在没有引用的情况下复制此值 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;} publ

我有
会话对象
,如何在没有引用的情况下复制此值

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;}
public T()
{
DataCount=新列表();
}
公共T(T诱惑)
{
DataCount=test.DataCount;
}
公共列表数据计数{get;set;}
当我从temp中删除
DataCount
时,它也会从
Session[“Tdata”]
中删除。我不想从Session中删除它。谷歌说这是因为
引用类型
。谢谢。

列表
是引用类型,就像
T
一样。因此,当复制构造函数复制原始的
数据计数
属性时,它不是复制值序列,而是复制原始的
列表
本身-因此,对一个属性的更改自然会反映在另一个属性中

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

public T(T tempt)
{
    DataCount = new List<int>(tempt.DataCount);
}
public T(T诱惑)
{
DataCount=新列表(试探.DataCount);
}
列表
是一种引用类型,就像
T
一样。因此,当复制构造函数复制原始的
数据计数
属性时,它不是复制值序列,而是复制原始的
列表
本身-因此,对一个属性的更改自然会反映在另一个属性中

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

public T(T tempt)
{
    DataCount = new List<int>(tempt.DataCount);
}
public T(T诱惑)
{
DataCount=新列表(试探.DataCount);
}