Announcement

Collapse
No announcement yet.

Gültigkeitsbereich von Objekten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Gültigkeitsbereich von Objekten

    Hallo,

    seit einiger Zeit kaue ich an einem Verständnisproblem. Daher frage ich hier einfach mal.
    Ich habe folgede Klasse definiert:

    class Adressen {
    ...
    }

    Im Constructor der Main Form erzeuge ich nun ein Objekt der Klasse Adressen. Das funktioniert, wie auch der Zugriff darauf, einwandfrei:

    public MainForm(){
    // this call is required for Windows Forms designer support.
    InitializeComponent();

    ...
    string PathADR = CurDir + "adr.txt";
    ...
    Adressen Adr = new Adressen(PathADR);

    // Combobox mit 1. Zeile der jeweiligen Adresse fuellen
    for (int i = 0; i<5; i++) { cbREan.Items.Add(Adr[i].s[0]); }
    ...
    }

    Mein Problem ist nun, dass in einer Eventbehandlungsroutine (s. u.) er nichts mehr vom Objekt Adr weiss und eine Fehlermeldung ausgibt. Ist ein im Constructor erzeugtes Objekt nicht in der ganzen Klasse sichtbar ? Wo liegt mein (Denk)Fehler ?


    void BtnSpeichernREMouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
    Bills.Actu.Add(DateTime.Now.ToShortDateString());

    adr_t a = new adr_t(4);
    a = Adr[cbREan.SelectedIndex];

    ...

    Bedanke mich schon mal für jede Antwort.

    Gruss
    Horst

  • #2
    Hallo Horst

    Bin zwar auch kein C# Profi, aber ich denke, dass Adr nur eine normale, lokale "Variable" ist, die nur im Konstruktor gültig ist. Sobald der Konstruktor ausgeführt wurde, wird das Adr dem Garbage Collector zum Frass vorgeworfen, ist also nicht mehr gültig.
    Du müsstest "Adressen Adr;" ausserhalb des Konstruktors deklarieren und dann im Konstruktor mit "Adr = new Adressen(PathADR);" instantiieren. So sollte es funktionieren.

    Grüsse
    Johan

    Comment


    • #3
      Hallo Johann,

      hattest völlig recht. Jetzt läuft es :-)))

      nochmals DANK

      Comment

      Working...
      X