Comment ajouter un nouvel élément dans un tableau de chaînes existant en C#.net ?
J'ai besoin de préserver les données existantes.
Comment ajouter un nouvel élément dans un tableau de chaînes existant en C#.net ?
J'ai besoin de préserver les données existantes.
Une nouvelle Append<TSource>
a été ajoutée à la méthode IEnumerable<TSource>
depuis .NET Framework 4.7.1 et .NET Core 1.0.
Voici comment l'utiliser :
var numbers = new [] { "one", "two", "three" };
numbers = numbers.Append("four").ToArray();
Console.WriteLine(string.Join(", ", numbers)); // one, two, three, four
Notez que si vous voulez ajouter l'élément au début du tableau, vous pouvez utiliser la nouvelle fonction Prepend<TSource>
à la place.
Vous pouvez développer la réponse fournie par @Stephen Chung en utilisant sa logique basée sur LINQ pour créer une méthode d'extension utilisant un type générique.
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();
}
}
Vous pouvez ensuite l'appeler directement sur le tableau comme ceci.
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...
}
Certes, la méthode AddRangeToArray() semble un peu exagérée puisque vous avez la même fonctionnalité avec Concat() mais de cette façon le code final peut "travailler" avec le tableau directement contrairement à ce qui se passe ici :
options = options.Concat(new string[] { "one", "two", "three" }).ToArray();
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.