Autor |
Beitrag |
Peter1000
Beiträge: 60
|
Verfasst: Di 16.12.14 16:50
Hallo,
ich lese in Methode einer Klasse aus einer Datei Daten in ein Array ein.
Die Größe dieses Arrays wird in Abhängigkeit der Dateilänge erzeugt.
Wie kann ich aus anderen Methoden heraus auf dieses Array zugreifen?
Thx
Peter
|
|
C#
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Di 16.12.14 17:20
Hallo,
Also entweder du definierst dein array als Klassen- bzw. Ovbjektvariable oder du übergibst es jeder Methode als Parameter. Das funktioniert, weil Arrays immer Referenztypen sind.
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
Peter1000
Beiträge: 60
|
Verfasst: Di 16.12.14 17:32
C# hat folgendes geschrieben : | Hallo,
Also entweder du definierst dein array als Klassen- bzw. Ovbjektvariable oder du übergibst es jeder Methode als Parameter. Das funktioniert, weil Arrays immer Referenztypen sind. |
Es ist so, bei klick auf den Button1 wird die Datei gelesen und die Daten in ein Array eingetragen.
Bei Klick auf Button2 sollen bestimmte Einträge in diesem Array angezeigt werden.
Wie soll ich das Array da als z.b. Referenz übergeben?
|
|
freak4fun
Beiträge: 604
Erhaltene Danke: 4
Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
|
Verfasst: Di 16.12.14 17:38
Du hast das Array in deiner Klasse gespeichert. Du gibst deiner Klasse also eine Methode die das Array wieder rausrückt.
_________________ "Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
|
|
Peter1000
Beiträge: 60
|
Verfasst: Di 16.12.14 17:48
freak4fun hat folgendes geschrieben : | Du hast das Array in deiner Klasse gespeichert. Du gibst deiner Klasse also eine Methode die das Array wieder rausrückt. |
Wie meinst du das genau?
Das Array wird in einer Methode der Klasse erzeugt.
Wie kann dann eine andere Methode der selben Klasse auf das Array der anderen Methode zugreifen??
|
|
Peter1000
Beiträge: 60
|
Verfasst: Di 16.12.14 17:54
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| public void datei_lesen() { FileStream filehandle = new FileStream(pfadUndDatei, FileMode.Open, FileAccess.ReadWrite, 0); BinaryReader binReaderDatei = new BinaryReader(filehandle);
int dateiGroesse = (int)filehandle.Length; byte[] array = new byte[dateiGroesse]; }
public void zugriff_auf_array() {
} |
Moderiert von Th69: C#-Tags hinzugefügt
|
|
freak4fun
Beiträge: 604
Erhaltene Danke: 4
Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
|
Verfasst: Di 16.12.14 17:58
C#-Quelltext 1: 2: 3: 4: 5: 6:
| class DeineKlasse { public byte[] array; ... public void datei_schreiben(){ this.array ... } public void datei_lesen(){} } |
_________________ "Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
Für diesen Beitrag haben gedankt: Peter1000
|
|
C#
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Di 16.12.14 22:28
Zitat: | Wie soll ich das Array da als z.b. Referenz übergeben? |
Ein Array (egal welcher Typ) ist immer ein Referenztyp. D.h. wenn du ein Array als Parameter Argument übergibst, ist es immer das gleiche Array und keine Kopie!
Wenn du das Array als Objektvariable anlegst kannst du das so machen:
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:
| class MyClass { private byte[] array;
public MyClass() {
}
private void ReadFile(string file) { array = File.ReadAllBytes(file);
}
private void DoSomething() { array[20] = 244;
} } |
Oder halt lokal:
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:
| class MyClass { public MyClass() { byte[] array = ReadFile("C:\\Datei.txt");
DoSomething(array);
array[2] = 21; }
private byte[] ReadFile(string file) { return File.ReadAllBytes(file);
}
private void DoSomething(byte[] array) { array[20] = 244;
} } |
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Für diesen Beitrag haben gedankt: Peter1000
|
|