Disons que j'ai ce tableau,
int[] numbers = {1, 3, 4, 9, 2};
Comment puis-je supprimer un élément par "nom"? , disons le numéro 4?
Même ArrayList
pas aidé à supprimer?
string strNumbers = " 1, 3, 4, 9, 2";
ArrayList numbers = new ArrayList(strNumbers.Split(new char[] { ',' }));
numbers.RemoveAt(numbers.IndexOf(4));
foreach (var n in numbers)
{
Response.Write(n);
}
Réponses:
Si vous souhaitez supprimer toutes les instances de 4 sans avoir besoin de connaître l'index:
LINQ: (.NET Framework 3.5)
Non-LINQ: (.NET Framework 2.0)
Si vous souhaitez supprimer uniquement la première instance:
LINQ: (.NET Framework 3.5)
Non-LINQ: (.NET Framework 2.0)
Edit: Juste au cas où vous ne l'auriez pas déjà compris, comme l'a souligné Malfist, vous devez cibler le .NET Framework 3.5 pour que les exemples de code LINQ fonctionnent. Si vous ciblez 2.0, vous devez référencer les exemples non-LINQ.
la source
la source
Vous pouvez également convertir votre tableau en liste et appeler remove sur la liste. Vous pouvez ensuite reconvertir dans votre tableau.
la source
Le code qui est écrit dans la question contient un bogue
Votre arraylist contient des chaînes de "1" "3" "4" "9" et "2" (notez les espaces)
Donc IndexOf (4) ne trouvera rien parce que 4 est un int, et même "tostring" le convertirait en "4" et non en "4", et rien ne sera supprimé.
Un arraylist est la bonne façon de faire ce que vous voulez.
la source
List<T>
serait mieux que ArrayList, cela semble être la seule réponse qui identifie correctement le problème rencontré par l'OP lorsqu'il a essayé d'utiliser ArrayList pour résoudre son problème d'origine. L'OP a compris que vous ne pouvez pas redimensionner les tableaux, ce que personne d'autre ne semble avoir remarqué, et a essayé d'utiliser un type redimensionnable à la place, que personne d'autre ne semble avoir remarqué, puis a été déclenché par un problème différent, ce que personne d'autre ne semble avoir remarqué.La réponse de Balabaster est correcte si vous souhaitez supprimer toutes les instances de l'élément. Si vous souhaitez supprimer uniquement le premier, vous feriez quelque chose comme ceci:
la source
J'ai posté ma solution ici .
C'est un moyen de supprimer un élément de tableau sans copier dans un autre tableau - juste dans le cadre de la même instance de tableau:
la source
La suppression d'un tableau lui-même n'est pas simple, car vous devez alors faire face au redimensionnement. C'est l'un des grands avantages d'utiliser quelque chose comme un à la
List<int>
place. Il fournitRemove
/RemoveAt
in 2.0 et de nombreuses extensions LINQ pour 3.0.Si vous le pouvez, refactorisez pour utiliser un
List<>
fichier.la source
En tant qu'extension générique, compatible 2.0:
Usage:
la source
' Pour supprimer des éléments de la chaîne en fonction des valeurs de clé du dictionnaire. 'Code VB.net
la source
Vous pouvez faire de cette manière:
la source