158 Stimmen

Neues Element in bestehendes Array in c#.net hinzufügen

Wie man neues Element in bestehenden String-Array in C#.net hinzufügen?

Ich muss die vorhandenen Daten erhalten.

6voto

stackuser83 Punkte 1674

Wenn Sie aus irgendeinem Grund viel mit Arrays und nicht mit Listen arbeiten, diese generisch typisierte Rückgabemethode Add könnte helfen

    public static T[] Add<T>(T[] array, T item)
    {
        T[] returnarray = new T[array.Length + 1];
        for (int i = 0; i < array.Length; i++)
        {
            returnarray[i] = array[i];
        }
        returnarray[array.Length] = item;
        return returnarray;
    }

5voto

Walter Verhoeven Punkte 3009

Alle vorgeschlagenen Antworten tun das Gleiche wie das, was sie angeblich vermeiden wollen: Sie erstellen ein neues Array und fügen darin einen neuen Eintrag hinzu, nur mit mehr Overhead. LINQ ist keine Magie, Liste von T ist ein Array mit einem Pufferspeicher mit etwas zusätzlichem Platz, um eine Größenänderung des inneren Arrays zu vermeiden, wenn Elemente hinzugefügt werden.

Alle Abstraktionen müssen dasselbe Problem lösen: Sie müssen ein Array ohne leere Slots erstellen, das alle Werte enthält und diese zurückgibt.

Wenn Sie die Flexibilität benötigen und eine ausreichend große Liste erstellen können, die Sie zur Übergabe verwenden können, dann tun Sie das. Außerdem hilft der neue Span bei der gemeinsamen Nutzung von Daten, ohne dass die Listen herumkopiert werden müssen.

Um die Frage zu beantworten:

Array.Resize(ref myArray, myArray.Length + 1);
data[myArray.Length - 1] = Value;

3voto

Axxelsian Punkte 781

Die Verwendung einer Liste wäre die beste Option für die Speicherverwaltung.

2voto

William Punkte 3125

Wie wäre es mit der Verwendung einer Erweiterungsmethode? Zum Beispiel:

public static IEnumerable<TSource> Union<TSource>(this IEnumerable<TSource> source, TSource item)
{
    return source.Union(new TSource[] { item });
}

zum Beispiel:

string[] sourceArray = new []
{
    "foo",
    "bar"
}
string additionalItem = "foobar";
string result = sourceArray.Union(additionalItem);

Beachten Sie, dass dies das Verhalten der Uniion-Erweiterung von Linq nachahmt (die verwendet wird, um zwei Arrays zu einem neuen Array zu kombinieren) und die Linq-Bibliothek benötigt, um zu funktionieren.

2voto

Gia Duong Duc Minh Punkte 1300
string str = "string ";
List<string> li_str = new List<string>();
    for (int k = 0; k < 100; i++ )
         li_str.Add(str+k.ToString());
string[] arr_str = li_str.ToArray();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X