Вы не можете «удалить» элемент из массива на самом деле - вы можете установить значение элемента в null (при условии, что это ссылочный тип), но массивы имеют фиксированный размер, поэтому вы не можете «удалить» элемент любойбольше, чем вы можете «добавить» один.
То, что вы показали в своем вопросе, создаст новый массив - хотя он на самом деле создает два массива, потому что вы вызываете ToArray
на результат, без особой причины.
Даже не ясно, какой метод ToArray
вы вызываете, учитывая, что вы упомянули .NET 2, который не включает LINQ to Objects.Вы используете LINQBridge?Более идиоматический способ LINQ был бы таким:
fr_watchdog.items = fr_watchdog.items.Where(val => val != numToRemove)
.ToArray();
Однако вы сказали, что это "не хорошо", не говоря о том, что способ это не хорошо.Он создаст новый массив, заполненный элементами, значение которых не равно numToRemove
.Чем это не то, что вам нужно?
Если проблема в том, что метод ToArray
не работает точно , потому что вы используете .NET 2 без LINQBridge, тогдапросто удалите звонок на ToArray()
из вашего исходного кода FindAll
.Опять же, обратите внимание, что это не изменит содержимое существующего массива - поэтому любые другие ссылки на этот исходный массив все равно будут видеть все исходные элементы.