方法有
构造函数,实现ICloneable接口,自定义copy方法等。
问题:
(1)实现System.ICloneable接口和自己定义一个mycopy方法最后会有什么不同。
(2)如何避免另一个引用改变值的问题。例如设想方案如下:
    《方案1》所有自定义的类都实现ICloneable,所有复制操作统一使用clone()方法。
    《方案2》所有自定义的类都实现一个用于拷贝的构造函数,所有复制操作统一使用构造函数。那么构造函数的参数应该是怎么样的?有的时候构造函数某些参数会难以生成,造成大量冗余代码。
     这些方案会有什么不利的地方???

解决方案 »

  1.   

    (1)可以网上查找有关接口的资料。(2)clone()的代码和拷贝构造函数的代码因该是差不多的,如果在构造函数某些参数会难以生成,造成大量冗余代码,那clone()里也可能会有同样的问题。
      

  2.   

    复制构造函数class C
    {
    public string strC;
    public int intC; public C()
    {
    strC = "";
    intC = "";
    } //复制构造体
    public C(C c) : this()
    {
    strC = c.strC;
    intC = c.strC;
    }
    } class D
    {
    public string strD;
    public int intD;
    public C objC; public D()
    {
    strD = "";
    intD = 0;
    } //复制构造体
    public D(D d) : this()
    {
    strD = d.strD;
    intD = d.intD;
    objC = new C(d.objC);
    }
    }
      

  3.   

    上面代码的进化版本1修改错误 2修改属性为私有!/////////////////////////////////////////////////////
    class C
    {
    private string strC;
    private int intC; public C()
    {
    strC = "";
    intC = 0;
    } //复制构造体
    public C(C c) : this()
    {
    strC = c.strC;
    intC = c.intC;
    }
    } class D
    {
    private string strD;
    private int intD;
    private C objC; public D()
    {
    strD = "";
    intD = 0;
    objC = null;
    } //复制构造体
    public D(D d) : this()
    {
    strD = d.strD;
    intD = d.intD;
    objC = new C(d.objC);
    }
    }