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.:
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; }
}
FileWrapper wr = new FileWrapper();
GraphView gv = new GraphView(wr.Data); SpectrumView sv = new SpectrumView(wr.Data); |
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 ?
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; } }
|
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 ?