Pour "supprimer" une ligne dans un tableau, il y a tout un tas de solutions.
La première, c'est de décaler à l'index - 1 toutes les lignes qui sont stockées après l'index à supprimer. La dernière ligne du tableau est alors à écarter des traitements ultérieurs.
=> C'est la méthode la plus performante, mais aussi la plus dangereuse, car si tu te base sur myArray.Length pour connaître le nombre de lignes, tu risques de lires des données qui ne sont pas dans ton tableau (d'un point de vue logique).
La seconde, la plus courante, c'est la recopie. Tu crée un array de dimension n - 1, et tu recopie dedans toutes les lignes de l'autre tableau, sauf celle à supprimer. Tu travailles ensuite sur le nouveau array. Très adaptée pour tes tableaux de petite taille, c'est une catastrophe niveau performances pour les tableaux de grande taille (on double la consommation mémoire, entre autres).
Une autre, basée sur la seconde, c'est de créer une List<T> bassée sur ton array T[] (exemple: List<int> lst = new List<int>(myArray) ) puis supprimer de la liste la ligne non désirée, et transformer dans l'autre sens la List<T> en array T[] (en prenant soit d'écraser le array initial). C'est plus court à propgramer, mais certainement aussi encore plus consommateur.
Une autre solution, basée sur la première, c'est de créer une class qui contient : ton array de données, plus une List<int> contenant les index des lignes supprimées. Tu crées alors des accesseurs et itérateurs sur ta classe qui permettent de parcourir ton array sans lire les lignes marquées comme supprimées. (c'est certainement la méthode la plus complexe, mais aussi la plus performante).
Je pense qu'on peut en énumérer encore une bonne vingtaine sans forcer, toutes aussi biscornues qu'originales
![:)](https://www.developpez.net/forums/images/smilies/icon_smile.gif)
Partager