Supprimer efficacement des éléments des tableaux .NET
Contrairement aux tableaux dynamiques comme List<T>
, les tableaux .NET standard n'ont pas de méthode Remove
directe. Cet article explore des stratégies efficaces pour supprimer des éléments des tableaux normaux.
Exploiter LINQ pour la suppression d'éléments
Une approche concise utilise LINQ pour filtrer et reconstruire le tableau :
<code class="language-csharp">var foos = new Foo[] { foo1, foo2, foo3, foo4 }; foos = foos.Where(f => f.Id != idToRemove).ToArray();</code>
Cela convertit le tableau en List<T>
, filtre l'élément indésirable en fonction d'une condition (ici, f.Id != idToRemove
), puis reconvertit la liste filtrée en tableau.
Méthode d'extension personnalisée pour RemoveAt
Fonctionnalité
Pour plus de contrôle, une méthode d'extension personnalisée imitant le comportement RemoveAt
peut être implémentée :
<code class="language-csharp">public static T[] RemoveAt<T>(this T[] source, int index) { if (index < 0 || index >= source.Length) throw new ArgumentOutOfRangeException(nameof(index)); T[] dest = new T[source.Length - 1]; Array.Copy(source, 0, dest, 0, index); Array.Copy(source, index + 1, dest, index, source.Length - index - 1); return dest; }</code>
Cette méthode gère efficacement les cas extrêmes et copie les éléments avant et après l'index spécifié dans un nouveau tableau, supprimant ainsi l'élément à l'index donné. Utilisation :
<code class="language-csharp">Foo[] foos = GetFoos(); foos = foos.RemoveAt(2);</code>
Cela offre un remplacement plus direct de la fonctionnalité RemoveAt
manquante dans les tableaux standards. N'oubliez pas que les deux méthodes créent un nouveau tableau ; le tableau d'origine reste inchangé. Choisissez la méthode la mieux adaptée à vos besoins et à votre style de codage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!