在实际开发过程中,我们常常需要实现对某个对象实现复制从而生成一个对象的副本,同时新生成的副本与原来的对象是完全独立的,可以使用以下代码:

 /// <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;

}