引用类型的深拷贝
参考:https://blog.csdn.net/sun307146966/article/details/8862101
一、List<T>对象中的T是值类型的情况(int 类型等)
对于值类型的List直接用以下方法就可以复制:
- List<T> oldList =new List<T>();
- oldList.Add(..);
- List<T> newList =new List<T>(oldList);
new Dictionary<string, MxmListModel>( action.mxmDetailsList); // 深拷贝
二、List<T>对象中的T是引用类型的情况(例如自定义的实体类)
1、对于引用类型的List无法用以上方法进行复制,只会复制List中对象的引用,可以用以下扩展方法复制:
- staticclass Extensions
- {
- publicstatic IList<T> Clone<T>(this IList<T> listToClone) where T: ICloneable
- {
- return listToClone.Select(item => (T)item.Clone()).ToList();
- }
- //<span style="color: rgb(0, 0, 0);">当然前题是List中的对象要实现ICloneable接口</span>
- }