public class A
    {
        string data1 = "";        public string Data1
        {
            get { return data1; }
            set { data1 = value; }
        }        private int data2 = "";        public int Data2
        {
            get { return data2; }
            set { data2 = value; }
        }
    }    public class B:A
    {
        public B(A a)
        {
            //  有没有办法在这里快速复制?
            this.Data1 = a.Data1;
            this.Data2 = a.Data2;
        }        private string data3 = "";        public string Data3
        {
            get { return data3; }
            set { data3 = value; }
        }
    }

解决方案 »

  1.   

        public class B:A 
        { 
            public B():base() 
            { 
            }         private string data3 = "";         public string Data3 
            { 
                get { return data3; } 
                set { data3 = value; } 
            } 
        }
      

  2.   

    Ctrl + C    Ctrl + V
    算不?
      

  3.   

    1楼的同志   
    LZ的需求是:  已知父类A的实例a  已知子类的实例b     把a中数据传递给b
      

  4.   

    如何复制同类的数据? 这样做:    public class B:A 
        { 
            public B(B b) 
            { 
                this.Data1 = b.Data1; 
               this.Data2 = b.Data2; 
            } 
        }同类还得复制,何况父类。
      

  5.   

            public B(A a) 
            { 
                this.Data1 = a.Data1; 
                this.Data2 = a.Data2; 
            } 我想要的就是简化上面的,因为父类是一系列数据的公共子集,从数据库里获取,子类的数据在数据库的另外一张表里。
    在项目里有大量的子类继承自这个父类,在初始化的时候,需要将父类的数据复制到子类类。
      

  6.   

    public class A 
        { 
            string data1 = ""; 
            public A(A a){
                data1=a.data1;
                data2= a.data2;
            }
            public string Data1 
            { 
                get { return data1; } 
                set { data1 = value; } 
            }         private int data2 = "";         public int Data2 
            { 
                get { return data2; } 
                set { data2 = value; } 
            } 
        }     public class B:A 
        { 
            public B(A a) :base(a)
            { 
                         }         private string data3 = "";         public string Data3 
            { 
                get { return data3; } 
                set { data3 = value; } 
            } 
        }
      

  7.   

    其实父类子类的,有些误导。这样说,1、如果是实例的复制,拷贝是免不了的。
    2、如果只是要用“父类”的数据,这不是继承,而要用包含。
    public B
    {
      A a;                   // B包含A
      public B(A a)
      {
         this.a = a;
      }
    }
      

  8.   

    其实用包含也可以,但如果用包含的话,在后面写逻辑代码的时候会感觉很不爽。
    因为我的定义是:
    药品->物品,宝石->物品
    物品包含名字,介绍等公共属性。后面的逻辑如果用 输出(药品1.基本.名字);给我的感觉就不如输出(药品1.名字);
      

  9.   

            public void PrintCopyClass()
            {
                PrintCopyClass(typeof(Goods), "goods");
            }        public void PrintCopyClass(Type type, string input)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine(string.Format("public {0}({0} {1})", type.Name, input));
                sb.AppendLine("{");            foreach (System.Reflection.PropertyInfo pi in type.GetProperties())
                {
                    sb.AppendLine(string.Format("this.{0} = {1}.{0};", pi.Name, input));
                }
                sb.AppendLine("}");            Console.WriteLine(sb.ToString());
            }简单的做了一个生成复制属性的代码,方便今后代码编写o(∩_∩)o
      

  10.   

    唉呀,都是费话,其实这个是可以做的。
    只要父类写两个函数就可以了
    Class A
    {
    A Clone()//这个函数父类本身产生自己的副本
    void Copy(A a)//这个函数父类获取外来的数据
    }
    然后子类随便调用就可以了,爱怎样获取父类数据就怎样调用,
    不用一行一行的为每个变量赋值。
      

  11.   

      本人之前也做过,还为了子类可以对父类的变量赋值,不得不把父类的变量设置为保护属性,然后在子类一个一个给父类的变量赋值,父类变量少还好,但随着应用扩展父类变量由十几个变为几十个,写子类的时候不得不对应父类为所有父类变量赋值,而且问题还不只这个,当父类子类都是你自己写时,任务虽然繁重仍然可完成,而当父类是其他人写的,而你又没有他的原始代码时,这个办法显然行不通,所以为了这个目的很多类都有Clone  及 Copy 的方法。