Entwickler-Ecke
WinForms - Array übergeben
ots_sharp - Mo 07.05.12 15:48
Titel: Array übergeben
Hallo,
aus einem Ereignis möchte ich ein Array zusammenbasteln. Irgendwie verliert das Array bei der Übergabe seine Inhalte. Bestimmt ist die Lösung wieder ganz einfach. Vielleicht seht ihr den Fehler?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| private void btnSaveSettings_Click(object sender, EventArgs e) { SWF.Control[] controls = new SWF.ComboBox[]{}; GetArrayOfBoxes(controls); } private GetArrayOfBoxes(SWF.Control[] control) { control = new SWF.Control[] { this.Box1, this.Box2};
} |
Gruß Stefan
Th69 - Mo 07.05.12 16:33
Hallo,
so legst du innerhalb deiner Methode nur eine lokale Instanz an, sieh dir mal die Schlüsselwörter
ref und
out an:
Modifizierer für out-Parameter [
http://msdn.microsoft.com/de-de/library/ee332485.aspx] (Titel ist zwar falsch übersetzt [Original: "out parameter modifier"], aber ich denke mal, daß du lieber deutsch als englisch liest.)
Oder gib einfach das Control-Array als Rückgabewert deiner Methode an...
ots_sharp - Di 08.05.12 07:23
Die Lösung: Übergabe mit out-Parameter.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| private void btnSaveSettings_Click(object sender, EventArgs e) { SWF.Control[] controls = new SWF.ComboBox[]{};
GetArrayOfBoxes(out controls); }
private GetArrayOfBoxes(out SWF.Control[] control) { control = new SWF.Control[] { this.Box1, this.Box2}; |
}
Th69 - Di 08.05.12 09:52
Du brauchst das Array in deiner btnSaveSettings_Click()-Methode aber nicht initialisieren (new SWF.ComboBox[]{}), da es ja von der GetArrayOfBoxes wieder überschrieben wird (bei einem out-Parameter ist es zwingend notwendig, daß dieser Parameter in der Methode initialisiert wird).
ujr - Di 08.05.12 15:11
Hallo,
es ist hier allerdings ungewöhnlich, mit einem out-Parameter zu arbeiten, wenn man die Möglichkeit hat, den Rückgabewert zu verwenden. Gerade bei "Get..." wäre das Array als Rückgabe sinnvoller.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!