普通版:
- public static object CloneObject(object obj)
- {
- using ( MemoryStream memStream = new MemoryStream( ) )
- {
- BinaryFormatter binaryFormatter = new BinaryFormatter( null ,
- new StreamingContext( StreamingContextStates.Clone ) );
- binaryFormatter.Serialize( memStream , obj );
- memStream.Seek( 0 , SeekOrigin.Begin );
- return binaryFormatter.Deserialize( memStream );
- }
- }
泛型版:
- public static T Clone<T>(T obj)
- {
- T ret = default(T);
- if (obj != null)
- {
- XmlSerializer cloner = new XmlSerializer(typeof(T));
- MemoryStream stream = new MemoryStream();
- cloner.Serialize(stream, obj);
- stream.Seek(0, SeekOrigin.Begin);
- ret = (T)cloner.Deserialize(stream);
- }
- return ret;
- }
注意: 如果某个类报提示错误: XXX 类无法序列化, 则要在类名上加上 [Serializable]
转载:
- https://blog.csdn.net/yinbucheng/article/details/62418205
- C#------ 如何深度克隆一个对象
来源: http://www.bubuko.com/infodetail-2660992.html