如何在递归类中共享变量?

时间:2016-05-03 17:58:23

标签: c#

我有以下类,我希望能够更改ever的值并将所有递归(在根中声明的类)更新为它的最新值。

public class A
{
    List <A> ListA= new List<A>;
    int ever;

}

2 个答案:

答案 0 :(得分:0)

要在值更改时运行逻辑,您需要使用属性

public class A
{
    List <A> ListA = new List<A>();
    private int _ever ;
    public int ever 
    {
        get {return _ever;}
        set {
                foreach(A a in ListA) 
                {
                    a.ever = value;
                }
            }
    } 
}

如果只有一个&#34; root&#34;实例您也可以创建字段static - 这样该值与相关联,而不是特定的实例

答案 1 :(得分:0)

您可以使用属性设置字段,该属性设置字段以及列表中的所有项目。

请注意这一点,因为如果你有任何循环引用,这将导致StackOverflowException

public class A
{
    private int _ever;
    private List<A> _list = new List<A>();

    public int Ever
    {
        get { return _ever; }
        set
        { 
            _ever = value;
            foreach (A a in _list)
            {
                a.Ever = value;
            }
        }
    }
}