Entwickler-Ecke
Basistechnologien - Dynamische arrays in C#
JayK - Do 04.08.05 15:41
Titel: Dynamische arrays in C#
Hallo,
wie deklariert man in C# ein dynamisches array ud wie geht man damit um (Länge setzen, etc. ...)
Hab schon gegoogelt und hier im Forum gesucht aber nix gefunden.
Schonmal Danke im vorraus,
JayKModeriert von
raziel: Topic aus .NET verschoben am Sa 17.09.2005 um 22:09
AndyB - Do 04.08.05 16:34
C# kennt keine dynamischen Arrays, so wie Delphi.NET. Da musst du wohl mit ArrayList und vielen Typecasts dich durchmogeln, dann das Array ist in C# in dem Sinne statisch als dass man die Größe nach dem (dynamischen) Erstellen nicht verändern kann, ohne ein neues Array anzulegen, die Daten zu kopieren und das neue Array zu nutzen.
C#-Quelltext
1: 2: 3: 4: 5:
| MyObj[] myArray = new MyObj[10]; MyObj[] temp = new MyObj[11]; myArray.CopyTo(temp, 0); myArray = temp; |
Für irgendwas muss ja Delphi.NET gut sein
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var MyArray: array of MyObj; begin SetLength(MyArray, 10); SetLength(MyArray, 11); end; |
Moderiert von
raziel: Code- durch C#-Tags ersetzt
Speedmaster - Mi 10.08.05 18:15
Natürlich sind Dynamische Arrays möglich, auch wenn sie keine normalen Arrays mehr sind sondern Collections.
Dazu einfach System.Collections einbinden. Unter Spezialized gibt es ein paar Vorgaben, um eigene zu erstellen benutzt du System.Collections.CollectionBase.
Ein Beispiel gibts dazu auf MSDN, und wenn du #develop hast kannst du es sogar automatisch erzeugen lassen!
Marauder - Do 18.08.05 11:29
Dynamische arrays können auch in c# mit new erzeugt werden:
C#-Quelltext
1: 2:
| int[] myIntArray myIntArray = new int[5] { 1, 2, 3, 4, 5 }; |
auf die art in etwa..
Moderiert von
Christian S.: Code-Tags hinzugefügt.
Moderiert von
raziel: Code- durch C#-Tags ersetzt
Motzi - Do 18.08.05 12:01
@Marauder: das ist schon klar - so gesehen gibt es in C# eigentlich nur dynamische Arrays. ABER, wie änderst du zur Laufzeit die Länge dieses Arrays, ohne den Inhalt zu löschen?
Marauder - Do 18.08.05 18:07
ja, da hast du recht, motzi, so richtig dynamische arrays gehen nur über die klasse arraylist
und damit über collections...
bäh... diese primitiven hochsprachen... :wink: drum mach ich delphi...
UC-Chewie - Do 18.08.05 18:14
Marauder hat folgendes geschrieben: |
bäh... diese primitiven hochsprachen... :wink: drum mach ich delphi... |
Oh ja, ich setz lieber jedesmal die Länge manuell hoch, als eine Klasse zu verwenden, die dies transparent, automatisch und bei Bedarf tut :roll:
Marauder - Do 18.08.05 22:01
@UC-Chewie:
Mein letzter Post war etwas Sarkasmus gepaart mit einer Prise Ironie...
Nimm das doch nicht so ernst :wink:
UC-Chewie - Fr 19.08.05 09:27
Marauder hat folgendes geschrieben: |
@UC-Chewie:
Mein letzter Post war etwas Sarkasmus gepaart mit einer Prise Ironie...
Nimm das doch nicht so ernst :wink: |
Das hoffe ich doch. Aber nicht wenige hier im Forum denken wirklich so :roll:
Marauder - Fr 19.08.05 10:35
Tja... lass Ihnen ein wenig Zeit :wink: Sie sind halt noch jung...
Robert_G - Di 27.09.05 12:40
AndyB hat folgendes geschrieben: |
C# kennt keine dynamischen Arrays, so wie Delphi.NET. Da musst du wohl mit ArrayList und vielen Typecasts dich durchmogeln, dann das Array ist in C# in dem Sinne statisch als dass man die Größe nach dem (dynamischen) Erstellen nicht verändern kann, ohne ein neues Array anzulegen, die Daten zu kopieren und das neue Array zu nutzen.
...
Für irgendwas muss ja Delphi.NET gut sein |
Dann kannst du mir sicher auch erklären, wie D.Net das machen will ohne den Array zu kopieren? :gruebel:
Ich konter da glatt mit "
Why SetLength is evil? [
http://blogs.remobjects.com/blogs/mh/?p=65&more=1&c=1&tb=1&pb=1]" :P
Robert_G - Mo 03.10.05 17:24
Öhm... darf ich mal anmerken, dass der Thread trotz mehrerer Lösungsvorschläge[1] immer noch als offene Frage in der Liste steht? :angel:
[1]welche aus Containerklassen oder einem schlichten Nein bestehen
JayK - Mo 03.10.05 22:35
Sorry, ich hatte den Thread vergessen, weil ich das Projekt, wo ich das gebraucht hätte, verworfen habe. ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!