Entwickler-Ecke
C# - Die Sprache - Referenz auf Array
Macoy - Mi 15.03.06 12:23
Titel: Referenz auf Array
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.:
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; }
}
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 ?
Christian S. - 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 [
http://blogs.gotdotnet.com/ricom/]).
Grüße
Christian
Macoy - Mi 15.03.06 13:12
Templateklassen sind doch erst ab DotNet 2.0 verfügbar, oder ?
Christian S. - Mi 15.03.06 13:14
Generics, ja, die gibt es erst ab 2.0. Ich wusste nicht, dass Du mit 1.1 arbeitest.
Macoy - Fr 17.03.06 16:07
Danke für die Hinweise. Dann werd ich wohl umsteigen auf 2.0 .
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!