【问题标题】:How can i copy from Session Data without reference?如何在不参考的情况下从会话数据中复制?
【发布时间】:2017-07-12 09:09:22
【问题描述】:

我有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 中删除 DataCount 时。它也会从 Session["Tdata"] 中删除。我不想从 Session 中删除它。Google 说这是因为 reference type 。谢谢。

【问题讨论】:

    标签: c# asp.net session clone


    【解决方案1】:

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

    更改您的复制构造函数以创建一个 new 列表,但具有相同的原始成员。幸运的是,List&lt;int&gt; 的构造函数接受现有列表并获取其成员:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-28
      • 2020-02-12
      • 2018-08-22
      • 2017-04-25
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多