/// <summary> /// 使用序列化的方式,深克隆一个对象。 /// </summary> public static object CloneObject(object obj) { // 创建内存流 using (var ms = new MemoryStream()) { // 创建序列化器(有的书称为串行器) // 创建一个新的序列化器对象总是比较慢。 var bf = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone)); // 将对象序列化至流 bf.Serialize(ms, obj); // 将流指针指向第一个字符 ms.Seek(0, SeekOrigin.Begin); // 反序列化至另一个对象(即创建了一个原对象的深表副本) object cloneObject = bf.Deserialize(ms); // 关闭流 ms.Close(); return cloneObject; } }