Entwickler-Ecke

Basistechnologien - aus anderer Methode auf Array zugreifen


Peter1000 - Di 16.12.14 16:50
Titel: aus anderer Methode auf Array zugreifen
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# - 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.


Peter1000 - 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 - 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.


Peter1000 - 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 - 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()
{
            // 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 - 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(){} 
}


C# - 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);

            // Oder wie auch immer du die Datei auslest
        }

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

            // Dein Array bearbeiten
        }
    }

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);

            // Oder wie auch immer du die Datei auslest
        }

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

            // Dein Array bearbeiten
        }
    }