[C#] Array Größe ändern

Backslash

Captain
Registriert
Okt. 2006
Beiträge
3.242
Hi!

Wie kann ich die größe eines Arrays zu Laufzeit ändern bzw. überhaupt ein Array erstellen, wenn ich vorher die größe nicht weiß?

Danke schonmal :)

Backslash
 
Hallo Backslash

Das kannst am besten mit Listen machen.
Da spielt die Größe keine Rolle mehr.
Liste<string> xyz = new Liste<string();
xyz.add("ein string");

Grüße

tewes
 
Da ich nur C mache, aber C++ ja davon abstammt, kannst du sicher wie in C dir ein Array basteln mit malloc()/calloc(), dessen Größe noch nicht dir bekannt ist. Wenn du dann mehr/weniger speicher brauchst, dann kannst du dass mit realloc() bewerkstelligen. Jedoch muss du den Speicher zum Schluß(dann, wenn du den Array nicht mehr brauchst) mit free() wieder freigeben. Ein sehr einfaches Beispiel gibts hier...

edit: so wie es aussieht, ist dass die Methode, die man in C++ am Besten nicht nutzen sollte...
 
Zuletzt bearbeitet:
Listen sind für den Einsatzzweck meist am besten. Arraygröße ändern ohne die Daten zu verlieren, wird im .Net Framework nicht unterstützt.

Liste<string> xyz = new Liste<string();
Auch wenn Microsoft gerne die Befehle übersetzt, wie man z.B. in Excel sieht, so ist C# glücklicherweise noch nicht auf deutsch übersetzt. Die Zeile muss natürlich so lauten:
PHP:
List<string> xyz = new List<string>();
 
Zuletzt bearbeitet:
@Götterwind:
C# != C++
C# ist wesentlich Object Orientierter als C++ und C.
Dort wird dir direkt die Klasse Liste mitgegeben die automatisch, wenn das interne Array zu klein wird die Größe um 4 Datensätze erhöht. Und gleiches beim Löschen eines Wertes.

Grüße

tewes
 
C# ist wesentlich Object Orientierter als C++ und C.

Naja, wie C ist ja klar, da C eine prozedurale Sprache ist. Aber objektorientierter wie eine andere objektorientierte Programmiersprache zu sein, dass musst du mir erst mal erklären.
Sie haben halt einen komplett unterschiedlichen Aufbau, ich würde aber C# nicht als objektorientierter bezeichnen.
 
Also ich finde C# doch sehr Objekt Orientiert.
Oke, ich muss zu geben ich habe selbst noch nie mit C++ gearbeitet. Aber soweit ich das mitbekommen habe ist C++ nur ein versuch gewesen C Objekt Orientiert zu machen.
Code:
cout << "\nDas unsortierte Array: ";
Console.WriteLine("Das unsortierte Array");
Da finde ich es in C# wesentlich leichter zu erkennen was das Programm grade tut.

Aber jeder hat seine eigene Meinung über eine Programmiersprache.
Und hier wurde auch nach etwas komplett anderem gefragt ;)

Grüße

tewes
 
@tewes
Ach was, dass hätte ich jetzt nicht gedacht. Du hast mich jetzt erleuchtet. ;) Aha, wenn ich also einen Wert lösche, wird das Array trotzdem größer?! Zumindest hast du das geschrieben. Vielleicht erklärt es die zunehmende Größe von Vista...
Mal Scherz beiseite. Ich hatte erst gelesen, dass es sich um ein Problem in C++ handelt.

Asche auf mein Haupt!
 
Oh oke, da habe ich nicht mehr nachgedacht.
Aber war das nicht in 95 so das der Speicher voll war wenn man nichts getan hat? Da haben die bei Microsoft wirklich noch alle so gedahct wie ich eben ;)

Grüße

tewes
 
Is ja schon wieder "bissl" offtopic hier ;) aber ich werds jetzt mal mit ner Liste probieren, thx für alle antworten :)

mfg Backslash
 
Du könntest auch, da du ja mit einer Ansammlung von Elementen arbeitest, das tolle Paket System.Collections nutzen. Da gibts ne Klasse ArrayList, mit welcher ich am liebsten arbeite. Die kannst du mit jedweden Elementen füttern.
 
Götterwind schrieb:
Vielleicht erklärt es die zunehmende Größe von Vista...
Du meinst nicht wirklich, dass Microsoft irgendwelche Programme in C# schreibt? Die verwenden vernünftige Programmiersprachen wie C bzw. C++, die nicht irgendwelche sinnlosen Runtime-Libraries brauchen ;)
 
Ach man, schön wäre es, wenn man Ironie erkennen würde :rolleyes: Was willst du mit Unterstreichen von "vernünftig" ausdrücken? Wenn du was ausrechnen willst, dann nimmt man Fortran, will man was schreiben, was portabel ist, dann nehme man z.B. C oder C++ usw. ... Jede Programmiersprache hat ihre individuellen Vor-und Nachteile. Das wird jetzt aber wirklich sehr offtopic...
 
avunculus schrieb:
Du meinst nicht wirklich, dass Microsoft irgendwelche Programme in C# schreibt?

türlich, türlich, sicher Digger ;)
 
avunculus schrieb:
Du meinst nicht wirklich, dass Microsoft irgendwelche Programme in C# schreibt?
Selbstverständlich. Tendenz steigend.


Und ja, C# ist "objektorietierter" als C++, z.B. gibt es keine primitiven Datentypen.
 
Zurück
Oben