HOWTO · Csharp
String zu einem Array in C# hinzufügen
Es gibt keine integrierte Methode zum dynamischen Hinzufügen neuer Elemente zu einem vollständig gefüllten Array in C#.
Auf dieser Seite
Ein Array in C# hat eine feste Länge, daher können Sie kein Element direkt an dasselbe Array anhängen. Um einen Wert hinzuzufügen, erstellen Sie ein größeres Array oder kopieren Sie die Werte in eine Sammlung mit veränderbarer Größe. Verwenden Sie List<T>, wenn Sie Werte wiederholt hinzufügen möchten; verwenden Sie Array.Resize für eine direkte einmalige Vergrößerung, wenn das Ergebnis ein Array bleiben muss. Die Beispiele verwenden Zeichenfolgen, aber beide Ansätze funktionieren auch mit anderen Elementtypen, wenn der hinzugefügte Wert den passenden Typ hat.
Ein Element zu einem Array hinzufügen, indem Sie es in eine List<T> konvertieren
Konvertieren Sie das vorhandene Array in eine List<T> und rufen Sie dann List<T>.Add auf, um den neuen Wert an diese Liste anzuhängen. In C# ist List<T>.Add die Listenmethode zum Hinzufügen eines Elements; sie kann nicht auf dem Array selbst aufgerufen werden. Konvertieren Sie die Liste nur dann zurück, wenn späterer Code ein Array benötigt. List<T> verwaltet ihre Kapazität beim Wachsen, was sie zur einfacheren Wahl macht, wenn mehrere Werte hinzugefügt werden. Die Konvertierung verwendet direkt den List<T>-Konstruktor; LINQ ist nicht erforderlich.
Dieses vollständige Beispiel veranschaulicht, wie eine Zeichenfolge hinzugefügt und ein Array als Ergebnis beibehalten wird.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
string[] items = { "One", "Two", "Three" };
string newItem = "New Element";
var list = new List<string>(items);
// List<T>.Add appends the new value to the list.
list.Add(newItem);
items = list.ToArray();
foreach (string item in items)
{
Console.WriteLine(item);
}
}
}
One
Two
Three
New Element
new List<string>(items) kopiert die Werte des Arrays in eine Liste. List<T>.Add hängt newItem an diese Liste an, und ToArray() erstellt das Array, das vom Rest des Programms verwendet wird. Wenn nachfolgender Code mit einer Liste arbeiten kann, behalten Sie die Liste bei und überspringen Sie die abschließende Konvertierung.
Die Konvertierung vom Array zur Liste kopiert die vorhandenen Elemente, während die Liste wachsen kann, wenn Werte angehängt werden. Das Zurückkonvertieren erstellt ein weiteres Array, lassen Sie diesen Schritt daher weg, wenn die nächste Operation eine List<string> akzeptiert. Verwenden Sie für ein generisches Array den passenden Listentyp, z. B. List<int> für ein int[], und fügen Sie Werte desselben Typs hinzu.
Ein Element mit Array.Resize zu einem Array hinzufügen
Für ein einmaliges Hinzufügen, wenn ein Array erforderlich ist, rufen Sie Array.Resize mit dem Array als Referenz und seiner neuen Länge auf und weisen Sie dann den Wert am letzten Index zu. Beim Ändern der Größe wird ein Ersatzarray erstellt und die vorhandenen Werte werden hineinkopiert; der ref-Parameter aktualisiert die Variable, sodass sie auf diesen Ersatz verweist. Der neue Platz ist nach der Größenänderung bei Length - 1 verfügbar.
Dieses vollständige Beispiel zeigt die Abfolge aus Größenänderung und Zuweisung.
using System;
class Program
{
static void Main()
{
string[] items = { "One", "Two", "Three" };
string newItem = "New Element";
Array.Resize(ref items, items.Length + 1);
items[items.Length - 1] = newItem;
foreach (string item in items)
{
Console.WriteLine(item);
}
}
}
One
Two
Three
New Element
Nach dem Aufruf verweist items auf das größere Array, sodass das Zuweisen bei items.Length - 1 seinen neu hinzugefügten Platz füllt. Dies ist für eine einmalige Änderung unkompliziert. Das wiederholte Vergrößern um jeweils eins kopiert bei jedem Aufruf die vorhandenen Werte, verwenden Sie daher stattdessen List<T> für wiederholte Hinzufügungen.
Array.Resize nimmt die Arrayvariable per ref entgegen, weshalb die aktualisierte Referenz nach dem Aufruf weiterhin über items verfügbar bleibt. Erhöhen Sie die angeforderte Länge um die Anzahl der zusätzlich benötigten Plätze und weisen Sie dann jeden neuen Wert seinem entsprechenden Index zu. Für einen einzelnen angehängten Wert ist der letzte Index Length - 1; füllen Sie bei mehreren Hinzufügungen jeden neuen Index, bevor Sie das in der Größe geänderte Array anderweitig verwenden. Der Elementtyp des Arrays bestimmt weiterhin, welche Werte Sie zuweisen können.