cNews A=new cNews();
A.a="1";
A.b="2";
A.c="3";我想实现B,B与A的属性基本相同,只有B.c="4";方法一:
cNews B=new CNews();
B.a="1";
B.b="2";
B.c="4";是否有更简单的办法可以实现B=A,但可以另外对B.c赋值?
我试过:
cNews B=A;
B.c="4";
这样不行,会把A.c的值也变过来了,不知道为什么。

解决方案 »

  1.   

    public class B : A
    {   string _c;
       public string c
       {
           get{return _c;}
           set{_C = value;}
       }
       
       public b() : base()
       {   }
    }
      

  2.   

    不太明白你说的B=A是什么意思,如果是引用相等的话,那对B.c的赋值必然引起A的改变
    如果是两个不同的对象,那么你可以试试让cNews类实现ICloneable接口,实现一个深拷贝
      

  3.   

    我的意思也就很简单,就是想实现:
    B的属性等于A的属性,但并不是全部相同,有一个不相同,就是B.C这个属性不相同。
      

  4.   

    代码如下:class CNews : ICloneable
        {
            public String A
            {
                get { return a; }
                set { a = value; }
            }        public String B
            {
                get { return b; }
                set { b = value; }
            }        public String C
            {
                get { return c; }
                set { c = value; }
            }        private String a;
            private String b;
            private String c;        #region ICloneable Members        public object Clone()
            {
                CNews cNews = new CNews();
                cNews.A = this.A;
                cNews.B = this.B;
                cNews.C = this.C;            return cNews;
            }        #endregion
        }生成两个CNews对象
    CNews news1 = new CNews();
    news1.A = "1";
    news1.B = "2";
    news1.C = "3";CNews news2 = news1.Clone() as CNews;
    news2.C = "4";
      

  5.   


    LorenLiu 用的是继承的办法。但这样要做多一个类,而且我的结果是不断的循环的,所以不太实际。
      

  6.   

    news1.Clone() as CNews; 这句不行哦。