在实际开发过程中,我们常常需要实现对某个对象实现复制从而生成一个对象的副本,同时新生成的副本与原来的对象是完全独立的,可以使用以下代码:
/// <summary>
/// 实现对象的深拷贝
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="obj">对象</param>
/// <returns>T</returns>
public static T CreateDeepCopy<T>(T obj)
{
T t;
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(memoryStream, obj);
memoryStream.Position = 0;
t = (T)formatter.Deserialize(memoryStream);
return t;
}