class A
{
    private int _cnt = 0;
    public int cnt
    {
        get { return _cnt; }
        set { _cnt = Value; }
    }    private A _parent= 0;
    public A parent
    {
        get { return _parent; }
        set { _parent= Value; }
    }
}当A中cnt改变,让A父级的cnt也做改变,该怎么实现?

解决方案 »

  1.   

    class A
    {
    private int _cnt = 0;
    public int cnt
    {
    get 

    return _cnt; 
    }
    set 

    _cnt = Value; 
    if(_parent != null) _parent._cnt = value;
    }
    } private A _parent;
    public A parent
    {
    get { return _parent; }
    set { _parent= Value; }
    }
    }
      

  2.   

    public static void Test()
    {
        A x = new A();
        x.parent = new A();
        x.cnt = 5;
        Console.WriteLine(x.parent.cnt);
    }class A
    {
        private int _cnt = 0;
        public int cnt
        {
            get
            {
                return _cnt;
            }
            set
            {
                _cnt = value;
                if (_parent != null) _parent._cnt = value;
            }
        }    private A _parent = null;
        public A parent
        {
            get { return _parent; }
            set { _parent = value; }
        }
    }
      

  3.   

      static void Main(string[] args)
            {
                A x = new A();
                A y = new A();
                A z = new A();            x.parent = y;
                y.parent = z;            x.cnt = 5;
                Console.WriteLine(y.cnt + "    " + z.cnt);
                Console.ReadKey();
            }
    /*
    输出  5    0
    */按1楼所说,如果是单一的父级可以改变,但是如果父级有N层,一直到顶层都要改变就实现不了,
      

  4.   


    using System;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main()
            {
                A x = new A();
                A y = new A();
                A z = new A();
              
                x.parent = y;
                           y.parent = z;
     x.cnt = 5;
            
                Console.WriteLine(y.cnt + "    " + z.cnt);
                Console.ReadKey();
            }    }
        class A
        {
            private int _cnt;
            public int cnt
            {
                get
                {
                    return _cnt;
                }
                set
                {
                    _cnt = value;
                    if (_parent != null) parent.cnt = value;//应该父级属性的cnt属性赋值,本来是_parent._cnt = value;这只是给当前对象中的parent这个属性中的cnt赋值而不是给父级中的cnt赋值
                }
            }        private A _parent;
            public A parent
            {
                get { return _parent; }
                set { _parent = value; }
            }
        }
    }
      

  5.   

    按1楼所说,如果是单一的父级可以改变,但是如果父级有N层,一直到顶层都要改变就实现不了,如果你希望,你直接修改一点不就好了。谁知道你想怎么做呢?public static void Test()
    {
        A x = new A();
        x.parent = new A();
        x.cnt = 5;
        Console.WriteLine(x.parent.cnt);
    }class A
    {
        private int _cnt = 0;
        public int cnt
        {
            get
            {
                return _cnt;
            }
            set
            {
                _cnt = value;
                if (_parent != null) _parent.Cnt = value;//使用属性即可
            }
        }    private A _parent = null;
        public A parent
        {
            get { return _parent; }
            set { _parent = value; }
        }
    }