Laden...

Im Setter Änderungen protokollieren --> Endlosschleife

Erstellt von zeh-scharb vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.375 Views
Z
zeh-scharb Themenstarter:in
32 Beiträge seit 2015
vor 8 Jahren
Im Setter Änderungen protokollieren --> Endlosschleife

Die Klasse wird zu erst durch einen XML-Parser gefüllt und anschließend manuell weiterverarbeitet.

Beispiel:

  public class GUI
    {
        //  public String LANGUAGE;

        public string LANGUAGE
        {
            get { return LANGUAGE; }
            set { Console.WriteLine("changed language    " + value); LANGUAGE = value; return; }
        }
   }

Leider hängt er sich beim Füllen auf. Output:
changed language ger
changed language ger
changed language ger
changed language ger
changed language ger
changed language ger
changed language ger
changed language ger
changed language ger
....

Was mache ich falsch? 🤔

T
2.219 Beiträge seit 2008
vor 8 Jahren

Dein Code endet in einer Endlosschleife!
Du darfst deine Properties bei set nicht bei der Zuweisung verwenden sondern eine eigene interne Variable!
Das selbe auch bei deinem Getter!


private string language = null;

public string Language
{
    get
    {
        return language;
    }
    set
    {
        language = value;
    }
}

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

W
113 Beiträge seit 2006
vor 8 Jahren

Hallo zeh-scharb,

die Eigenschaft LANGUAGE ist rekursiv, darum wird sich euch deine Anwendung aufhängen (Stichwort: Endlos Schleife).

mfg,
Xan

1.029 Beiträge seit 2010
vor 8 Jahren

Hi,

du ruft im Setter den Setter auf. -> StackOverflow.

Ich gehe mal davon aus, dass du irgendein anderes Feld ansprechen wolltest?

LG

Z
zeh-scharb Themenstarter:in
32 Beiträge seit 2015
vor 8 Jahren

Vielen Dank, da hatte ich mal wieder Tomaten auf den Augen 8)
Ich dachte ich würde damit den Standart-Setter überschreiben und habe nicht gemerkt, dass ich ein loop gebaut habe

Mir der "T-Virus-Anpassung" klappt es! 👍