Допустим, у меня есть этот массив,
int[] numbers = {1, 3, 4, 9, 2};
Как я могу удалить элемент по имени? допустим номер 4?
Даже ArrayList
не помогло удалить?
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);
}
Ответы:
Если вы хотите удалить все экземпляры 4 без необходимости знать индекс:
LINQ: (.NET Framework 3.5)
Non-LINQ: (.NET Framework 2.0)
Если вы хотите удалить только первый экземпляр:
LINQ: (.NET Framework 3.5)
Non-LINQ: (.NET Framework 2.0)
Редактировать: на тот случай, если вы еще не поняли, как указал Малфист, вам нужно ориентироваться на .NET Framework 3.5, чтобы примеры кода LINQ работали. Если вы нацелены на 2.0, вам нужно сослаться на примеры, не относящиеся к LINQ.
источник
источник
Вы также можете преобразовать свой массив в список и вызвать удаление из списка. Затем вы можете преобразовать обратно в ваш массив.
источник
Код, который написан в вопросе, содержит ошибку
Ваш arraylist содержит строки «1», «3», «4», «9» и «2» (обратите внимание на пробелы)
Поэтому IndexOf (4) ничего не найдет, потому что 4 - это целое число, и даже «tostring» преобразует его в «4», а не «4», и ничего не будет удалено.
Arraylist - правильный путь, чтобы делать то, что вы хотите.
источник
List<T>
было бы лучше, чем ArrayList, но, похоже, это единственный ответ, который правильно определяет проблему, которая возникла у ОП, когда он пытался использовать ArrayList для решения своей первоначальной проблемы. ОП понимал, что вы не можете изменить размеры массивов, о которых никто другой, похоже, не заметил, и попытался использовать тип с изменяемыми размерами, который никто, кажется, не заметил, а затем столкнулся с другой проблемой, которая больше никому не кажется. чтобы заметили.Ответ Балабастера правильный, если вы хотите удалить все экземпляры элемента. Если вы хотите удалить только первый, вы должны сделать что-то вроде этого:
источник
Я разместил свое решение здесь .
Это способ удалить элемент массива без копирования в другой массив - просто в кадре того же экземпляра массива:
источник
Удалить из самого массива не просто, так как вам придется иметь дело с изменением размера. Это одно из больших преимуществ использования чего-то похожего на
List<int>
. Он предоставляетRemove
/RemoveAt
в 2.0 и множество расширений LINQ для 3.0.Если вы можете, рефакторинг для использования
List<>
или аналогичные.источник
Как общее расширение, 2.0-совместимый:
Использование:
источник
« Удалить элементы из строки на основе значений словаря. Код VB.net
источник
Вы можете сделать так:
источник