Si vous voulez supprimer toutes les instances de 4 sans avoir besoin de connaître l'index :
LINQ : (.NET Framework 3.5)
int[] numbers = { 1, 3, 4, 9, 2 };
int numToRemove = 4;
numbers = numbers.Where(val => val != numToRemove).ToArray();
Non-LINQ : (.NET Framework 2.0)
static bool isNotFour(int n)
{
return n != 4;
}
int[] numbers = { 1, 3, 4, 9, 2 };
numbers = Array.FindAll(numbers, isNotFour).ToArray();
Si vous voulez supprimer seulement la première instance :
LINQ : (.NET Framework 3.5)
int[] numbers = { 1, 3, 4, 9, 2, 4 };
int numToRemove = 4;
int numIndex = Array.IndexOf(numbers, numToRemove);
numbers = numbers.Where((val, idx) => idx != numIndex).ToArray();
Non-LINQ : (.NET Framework 2.0)
int[] numbers = { 1, 3, 4, 9, 2, 4 };
int numToRemove = 4;
int numIdx = Array.IndexOf(numbers, numToRemove);
List<int> tmp = new List<int>(numbers);
tmp.RemoveAt(numIdx);
numbers = tmp.ToArray();
Edit : Au cas où vous ne l'auriez pas déjà compris, comme Malfist l'a souligné, vous devez cibler le .NET Framework 3.5 pour que les exemples de code LINQ fonctionnent. Si vous ciblez la version 2.0, vous devez vous référer aux exemples Non-LINQ.
0 votes
Que faire si vous avez des valeurs en double dans votre liste ? Voulez-vous seulement supprimer la première instance ou toutes les instances ?
0 votes
oui, je n'ai pas de valeurs en double, une idée ?
0 votes
ahmed Vous voulez dire, non vous ne le faites pas, ou oui vous le faites ? (je n'insulte pas votre anglais, je demande juste une clarification)
0 votes
@Malfist - désolé :), je voulais dire que je ne me soucie pas des valeurs dupliquées parce que je suis sûr qu'il n'y en a pas dans mon cas, merci encore.
5 votes
Il n'est pas possible de supprimer des éléments d'un tableau en C#, comme le montre l'exemple suivant cet exemple de programme . Ce que vous pouvez faire, c'est créer un nouveau tableau, copier seulement certains des éléments du tableau original et le réassigner à la variable originale. C'est ce qui est fait dans toutes les réponses.