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.

27voto

tmania Punkte 271
 Array.Resize(ref youur_array_name, your_array_name.Length + 1);
 your_array_name[your_array_name.Length - 1] = "new item";

13voto

0xced Punkte 23133

Eine neue Append<TSource> Methode wurde hinzugefügt zu IEnumerable<TSource> seit .NET Framework 4.7.1 und .NET Core 1.0.

So wird sie verwendet:

var numbers = new [] { "one", "two", "three" };
numbers = numbers.Append("four").ToArray();
Console.WriteLine(string.Join(", ", numbers)); // one, two, three, four

Beachten Sie, dass Sie, wenn Sie das Element am Anfang des Arrays hinzufügen möchten, die neue Prepend<TSource> Methode.

8voto

Adi_Pithwa Punkte 391

Wenn Sie also ein bestehendes Array haben, lautet meine schnelle Lösung

var tempList = originalArray.ToList();
tempList.Add(newitem);

Ersetzen Sie nun einfach das ursprüngliche Array durch das neue

originalArray = tempList.ToArray();

8voto

dblood Punkte 1728

Sie können die von @Stephen Chung gegebene Antwort erweitern, indem Sie seine LINQ-basierte Logik verwenden, um eine Erweiterungsmethode mit einem generischen Typ zu erstellen.

public static class CollectionHelper
{
    public static IEnumerable<T> Add<T>(this IEnumerable<T> sequence, T item)
    {
        return (sequence ?? Enumerable.Empty<T>()).Concat(new[] { item });
    }

    public static T[] AddRangeToArray<T>(this T[] sequence, T[] items)
    {
        return (sequence ?? Enumerable.Empty<T>()).Concat(items).ToArray();
    }

    public static T[] AddToArray<T>(this T[] sequence, T item)
    {
        return Add(sequence, item).ToArray();
    }

}

Sie können es dann direkt auf dem Array wie folgt aufrufen.

    public void AddToArray(string[] options)
    {
        // Add one item
        options = options.AddToArray("New Item");

        // Add a 
        options = options.AddRangeToArray(new string[] { "one", "two", "three" });

        // Do stuff...
    }

Zugegeben, die AddRangeToArray()-Methode scheint ein wenig übertrieben, da man die gleiche Funktionalität mit Concat() hat, aber auf diese Weise kann der Endcode direkt mit dem Array "arbeiten" im Gegensatz zu diesem:

options = options.Concat(new string[] { "one", "two", "three" }).ToArray();

7voto

Soren Punkte 5851

Es ist besser, das Array unveränderlich und in einer festen Größe zu halten.

können Sie simulieren Add por Extension Method y IEnumerable.Concat()

public static class ArrayExtensions
    {
        public static string[] Add(this string[] array, string item)
        {
            return array.Concat(new[] {item}).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