C#list复制问题

在C#中list列表或者是list实体类,分为深复制与浅复制。
浅复制时,当复制的list值发生变化,原数据源也会发生变化。
test:
实体类:stu
public class stu{
public stu(){}
private string _id;
private string _name;
private string _sex;

    /// <summary>
    /// ID
    /// </summary>
    public string ID
    {
        set { _id = value; }
        get { return _id; }
    }
    /// <summary>
    /// 姓名
    /// </summary>
    public string Name
    {
        set { _name = value; }
        get { return _name; }
    }
    /// <summary>
    /// 性别
    /// </summary>
    public string Sex
    {
        set { _sex = value; }
        get { return _sex; }
    }

}
页面测试:
public void Search(){
//原数据类
List<stu> oldlist = new List<stu>();
//添加假数据
stu te = new stu();
te.ID = "1";
te.Name = "张三";
te.Sex = "女";
oldlist.add(te);
//新数据类
List<stu> newstu = new List<stu>();
newstu = oldstu;
for (int i = 0; i < newstu.Count; i++)
{
newstu[i].ID = "123";
newstu[i].Name = "123";
te.Sex = " 男";
}
}
这个时候,oldstu里面的数据已经改变。这个时候的list就属于浅复制。
因为两个list数据源调用属于一个地址,所以当newstu改变值时,oldstu的值也会改变。

list的深复制,不会改变原数据源。调用此方法即可
newstu = copyList(oldstu);
/// <summary>
/// list实体类深复制
/// </summary>
/// <param name="originalList">需要复制的实体类。根据复制的实体类给每个属性复制</param>
/// <returns></returns>
public List<stu> CopyList(List<stu> copyList)
{
List<stu> list = new List<stu>();

        foreach (stu obj in originalList)
        {
            stu s = new stu();
            s.ID = obj.ID;
            s.Name = obj.Name;
            s.Sex= obj.Sex;
            list.Add(s);
        }
        return list;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,087评论 19 139
  • 一. Java基础部分.................................................
    wy_sure阅读 3,846评论 0 11
  • JAVA面试题 1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域 ...
    JA尐白阅读 1,191评论 1 0
  • 1.女儿开学了,五年级第一天,感觉很好。 2.修理店遇到个小摩友,提起改装,共同语言很多。 3.升维第11课--越...
    零贰O2阅读 52评论 0 2