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


    简单吧!!

  • 相关阅读:
    背包问题
    计蒜客lev3
    线段树BIT操作总结
    图论题收集
    Codeforces Round #607 (Div. 2) 训练总结及A-F题解
    2-sat 学习笔记
    洛谷 P3338 【ZJOI2014】力/BZOJ 3527 力 题解
    $noi.ac$ #51 array 题解
    洛谷 P3292 【SCOI2016】幸运数字/BZOJ 4568 幸运数字 题解
    洛谷 P5283 【十二省联考2019】异或粽子 题解
  • 原文地址:https://www.cnblogs.com/adam/p/1165282.html
Copyright © 2011-2022 走看看