Autor Beitrag
Peter1000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: 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#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Di 16.12.14 17:32 
user profile iconC# hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Di 16.12.14 17:48 
user profile iconfreak4fun hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Di 16.12.14 17:54 
ausblenden 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()
{
            // lesen der  datei
            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()
{

//hier soll auf das byte-array der Methode "datei_lesen"  zugegriffen werden

}


Moderiert von user profile iconTh69: C#-Tags hinzugefügt
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Di 16.12.14 17:58 
ausblenden 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#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: 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:
ausblenden 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);

            // Oder wie auch immer du die Datei auslest
        }

        private void DoSomething()
        {
            array[20] = 244;

            // Dein Array bearbeiten
        }
    }

Oder halt lokal:
ausblenden 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);

            // Oder wie auch immer du die Datei auslest
        }

        private void DoSomething(byte[] array)
        {
            array[20] = 244;

            // Dein Array bearbeiten
        }
    }

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler

Für diesen Beitrag haben gedankt: Peter1000