Fra*_*inc 1 .net c# icloneable deep-copy
我正在努力克隆一个引用类型的列表列表.我尝试ICloneable在我的引用类中实现,但是,它似乎没有调用Clone()它中的方法.
码:
public class Solid : ICloneable{
private double[,] _points; //vertices do solido
private int[,] _edges; //arestas do solido
public int[,] Faces { get; private set; } //faces do solido
public int[,] Edges {
get { return _edges; }
set { _edges = value; }
}
...
public object Clone() {
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, this);
ms.Position = 0;
object obj = bf.Deserialize(ms);
ms.Close();
return obj;
}
}
Run Code Online (Sandbox Code Playgroud)
使用LINQ,您可以执行以下操作:
public List<List<T>> Clone<T>(List<List<T>> original) where T : ICloneable
{
return original
.Select(sl => sl.Select(x => (T)x.Clone()).ToList())
.ToList();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |