2016-05-03 7 views
-5

Ich habe die unten genannte Klasse, ich möchte in der Lage sein, den Wert von Ever zu ändern und alle rekursiven (die in der Wurzel deklarierte Klasse) auf den aktuellsten Wert davon zu haben.Wie kann ich Variablen in der rekursiven Klasse teilen?

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

} 
+0

Ich ehrlich gesagt nicht bekommen, was Sie versuchen zu erreichen. Bitte stell ein besseres Beispiel vor. –

+2

Sie könnten es "statisch" machen. – Quantic

+0

Ich möchte, dass Sie rekursiv bewerten, was genau Sie vor dem Posten hier erreichen wollen :-) – SirH

Antwort

0

Um Logik laufen zu haben, wenn der Wert ändert Sie eine Eigenschaft verwenden müssen:

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; 
       } 
      } 
    } 
} 

Wenn es nur eine „root“ Instanz könnten Sie auch das Feld machen static - auf diese Weise Der Wert ist der Klasse zugeordnet und nicht eine spezifische Instanz.

0

Sie können das Feld mit einer Eigenschaft umbrechen, die das Feld sowie alle Elemente in der Liste festlegt.

Seien Sie vorsichtig damit, denn wenn Sie Zirkelbezüge haben, wird dies eine StackOverflowException verursachen.

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; 
      } 
     } 
    } 
} 
Verwandte Themen