zoukankan      html  css  js  c++  java
  • 实现深拷贝的一种方法

    声明接口:
        

        public interface IClone
        
    {
            T Clone
    <T>(T instance) where T : class;
        }


    建立CloneManager类实现接口:

    public class CloneManager:IClone
        
    {
            
    /// <summary>
            
    /// Clones the specified instance.
            
    /// </summary>
            
    /// <typeparam name="T"></typeparam>
            
    /// <param name="instance">The instance.</param>
            
    /// <returns>A new instance of an object.</returns>

            T IClone.Clone<T>(T instance)
            
    {
                XmlSerializer serializer 
    = new XmlSerializer(typeof(T));
                MemoryStream stream 
    = new MemoryStream();
                serializer.Serialize(stream, instance);
                stream.Seek(
    0, SeekOrigin.Begin);
                
    return serializer.Deserialize(stream) as T;
            }

        }


    实际应用代码:

    class Program
        
    {
            
    static void Main(string[] args)
            
    {
                IClone clone 
    = new CloneManager.CloneManager();
                AA ta 
    = new AA();
                ta.aa 
    = 123;
                ta.bb 
    = 234;
                AA tb 
    = clone.Clone<AA>(ta);
                ta.aa 
    = 999;
                ta.bb 
    = 888;
                System.Console.WriteLine(ta.aa);
                System.Console.WriteLine(ta.bb);
                System.Console.WriteLine(tb.aa);
                System.Console.WriteLine(tb.bb);
            }

        }


        
    public class AA
        
    {
            
    public int aa = 0;
            
            
    public int bb = 0;
        }


    简单吧!!

  • 相关阅读:
    Java08_Lambda表达式
    Java基础02
    Java基础07
    JAVA基础06
    Java基础05
    Java基础01
    面向对象与面向过程
    Java常识2
    CSS常用属性记录
    geoserver发布热力图服务
  • 原文地址:https://www.cnblogs.com/adam/p/1165282.html
Copyright © 2011-2022 走看看