azer00 - Mi 15.10.08 11:05
Titel: Objekte
Hi ,
ich bin gerade dabei Methoden zu erstellen doch irgendwie kann ich in einer Klasse die Array Variable von der einen Methode
in der anderen übernehmen siehe unten
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| class VokabelTrainer {
public void NeuesVPaarEinlesenUndSammeln() { VokabelPaar[] VokabelListe = new VokabelPaar[100];
for (int i = 0; i < 2; i++) {
VokabelListe[i] = new VokabelPaar(); Console.Write("Deutsch :"); VokabelListe[i].deutsch = Console.ReadLine(); Console.Write("Französisch :"); VokabelListe[i].französisch = Console.ReadLine(); }
}
public void VokabelListeAusgeben() { VokabelTrainer VokAnzeigen=new VokabelTrainer(); for (int i = 0; i < 2; i++) { Console.WriteLine(VokabelListe); }
} } |
JüTho - Mi 15.10.08 11:27
Hallo und :welcome:
Zunächst bitte ich Dich um einen besseren Titel; dazu kannst Du den ersten Beitrag ändern.
Dann benötige ich eine bessere Fragestellung: Was ist eigentlich Dein Problem? Hast Du vielleicht ein "nicht" vergessen?
Dann schlage ich dringend vor, Dein Verfahren nicht mit einem Array, sondern mit einer
List<T> oder besser einem
Dictionary<string, List<string>> zu erledigen. Arrays sind nur für statische Werte geeignet, aber nicht für Sachen, die sich zur Laufzeit intensiv ändern. Bei Deiner einfachen Zuordnung Wort <-> Wort ginge auch
Dictionary<string, string>; aber in der Regel gibt es für ein Wort der einen Sprache mehrere Übersetzungen.
Dann musst Du Dich dringend mit den
Geltungsbereichen von Variablen befassen: Das Array der ersten Methode ist nur dort gültig und wird nach Verlassen dieser Methode wieder gelöscht. Bei der zweiten Methode erzeugst Du eine neue Instanz der Klasse, ohne diese zu verwenden; stattdessen verwendest Du eine neue, nirgends deklarierte Variable VokabelListe. Auch die Laufvariable der Schleife wird nicht verwendet.
Zusätzlich liefert
Console.WriteLine(VokabelListe) mit Sicherheit nicht das gewünschte Ergebnis. Da WriteLine einen String erwartet (oder etwas, was in einen String konvertiert werden kann), benutzt es dazu VokabelListe.ToString(). Das ist aber sicher nicht das, was Du haben willst.
Kurz zusammengefasst: Studiere zunächst eine Einführung, z.B. das
OpenBook Visual C# [
http://openbook.galileocomputing.de/visual_csharp/].
Gruß Jürgen