引用类型的深拷贝

参考:https://blog.csdn.net/sun307146966/article/details/8862101

一、List<T>对象中的T是值类型的情况(int 类型等)

对于值类型的List直接用以下方法就可以复制:

  1. List<T> oldList =new List<T>();  
  2. oldList.Add(..);  
  3. List<T> newList =new List<T>(oldList); 

 

new  Dictionary<string, MxmListModel>( action.mxmDetailsList);  // 深拷贝

 

二、List<T>对象中的T是引用类型的情况(例如自定义的实体类)

1、对于引用类型的List无法用以上方法进行复制,只会复制List中对象的引用,可以用以下扩展方法复制:

  1. staticclass Extensions  
  2. {  
  3.         publicstatic IList<T> Clone<T>(this IList<T> listToClone) where T: ICloneable  
  4.          {  
  5.                 return listToClone.Select(item => (T)item.Clone()).ToList();  
  6.          }  
  7. //<span style="color: rgb(0, 0, 0);">当然前题是List中的对象要实现ICloneable接口</span> 
  8. }  

 

posted @ 2020-12-18 14:48  乌柒柒  阅读(214)  评论(0编辑  收藏  举报