C#: Wie kann ich die Größe eines Arrays verdoppeln?

6 Antworten

Geht nicht, Du musst ein neues Array erstellen.

Die generische List-Klasse tut das aber schon lange und sehr klug, bei dem Ding brauchst Du nicht auf die Größe achten.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

Da du das scheinbar selber programmieren sollst, wie ich aus deinen Kommentaren entnehme, es gibt Array.Resize und du kannst ja mal spicken, wie die Entwickler das programmiert haben, indem du einen Blick in die offizielle Referenz wirfst: Array.cs

Die Datei im Browser zu navigieren ist schwierig, STRG+F kannst du in den meisten Browser benutzen, um nach Suchbegriffen zu suchen. Du findest dann Resize und musst dich aber durch weitere Methoden wühlen, bis du schließlich zu der Impementierung kommst.

Dumm gesagt, ein neues Array erstellen mit der doppelten Größe, das alte zwei mal durchgehen und die Zahlen ins neue einsetzen...


DotNetCreep 
Fragesteller
 11.03.2020, 21:53

ahh vergessen ich darf kein neues Array machen sondern ein Syntax finden der es "resized"

0
Simon221585  11.03.2020, 22:03
@DotNetCreep
using System;
class Program {
   static void Main() {
      char[] ch = new char[10];
      ch[0] = 'a';
      ch[1] = 'b';
      // Resize array
      Array.Resize<char>(ref ch, 10);
      // Set value for new elements
      ch[2] = 'c';
      ch[3] = 'd';
      ch[4] = 'e';
      ch[5] = 'f';
      ch[6] = 'g';
      ch[7] = 'h';
      ch[8] = 'i';
      ch[9] = 'j';
      Console.WriteLine("New Array: "+ new string(ch));
   }
} Dann benutz Array.Resize
0

Ein Array lässt sich nicht vergrößern, denn die Größe ist statisch fix. Du musst ein neues Array-Objekt anlegen und die Daten kopieren.

int [] p = new int [3];

p[0]= 5;
p[1]= 3;
p[2]= 1;

int[] pDouble = new int[2 * p.Length]; //Array mit doppelter Größe

for ( int u = 0; u < p.Length; u++) //Werte doppelt hinzufügen
{  
    pDouble[u] = p[u];
    pDouble[u + p.Length] = p[u];
}

for ( int u = 0; u < pDouble.Length; u++) //doppelt ausgeben 5,3,1,5,3,1
{
    Console.WriteLine(pDouble[u]);
}
Woher ich das weiß:Berufserfahrung