Autor Beitrag
Macoy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Mi 15.03.06 12:23 
Hallo,

Ich habe einen recht umfangreichen Array von Daten, den ich darstellen muss. Nun befürchte ich, das dieser Array ständig real kopiert wird. Bsp.:

ausblenden volle Höhe 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:
class Filewrapper
{
  public float[] Data;

  void Read(){...}
}

class GraphView:UserControl
{
  float[] data;

  public GraphView(float[] data)
{
 this.data = data;
}
}

class SpectrumView:UserControl
{
  float[] data;

  public SpectrumView(float[]data)
{
  this.data = data;  
}


}

// Aufruf

FileWrapper wr = new FileWrapper();
// Daten aus Datei laden

GraphView gv = new GraphView(wr.Data);
SpectrumView sv = new SpectrumView(wr.Data);
// ... und noch weitere Controls , die auf der Datenbasis arbeiten


Wird jetzt immer eine neue Kopie des Arrays erzeugt, oder habe ich es implizit mit Referenzen zu tun ? In C++ würde ich die ganze Sache mit Pointern lösen und wüsste dann genau, woran ich bin.

Eine Alternative habe ich mir schon ausgedacht, würde die was bringen ?
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
class GraphView:UserControl
{
  FileWrapper sourceFile;

  public GraphView(FileWrapper sourceFile)
{
this.sourceFile = sourceFile;
}
}

// jetzt nur noch zugriff auf Daten mittels sourceFile.Data[x]


Was hat es eigentlich mit den Keywords "ref" und "out" auf sich ?

Mein Programm funktioniert zwar einwandfrei, aber ich mache mir Sorgen über den Speicherbedarf.

Kann ich den Speicherbedarf meines Programmes irgendwie herausfinden ?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 15.03.06 12:38 
Hallo!

Mache bitte zur Frage, wie man den Speicherbedarf herausfindet, einen neuen Thread auf. Threads, in denen mehr als eine Frage behandelt wird, enden meist im Chaos und sind daher nicht erlaubt. Danke! :-)

zum Array:
Es wird immer nur die Referenz auf dassselbe Array gespeichert. Du solltest Dir aber trotzdem überlegen, statt Arrays ein List<T> zu nehmen. Die ist zum einen flexibler, zum anderen auch schneller (siehe hier).

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Macoy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Mi 15.03.06 13:12 
Templateklassen sind doch erst ab DotNet 2.0 verfügbar, oder ?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 15.03.06 13:14 
Generics, ja, die gibt es erst ab 2.0. Ich wusste nicht, dass Du mit 1.1 arbeitest.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Macoy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Fr 17.03.06 16:07 
Danke für die Hinweise. Dann werd ich wohl umsteigen auf 2.0 .