Member 13512434 Ответов: 2

Удалить элемент в массиве


У меня есть список, из которого я сделал массив ...

public string[] getlistboxarray()
{
    string[] arr = new string[listBox2.Items.Count];
    for (int i = 0; i < listBox2.Items.Count; i++)
    {
        arr[i] = listBox2.Items[i].ToString();
    }
    return arr;
}


У меня есть кнопка "Пуск", которая при нажатии удаляет первый элемент в массиве. Как бы я это сделал?

Что я уже пробовал:

Арр = Арр.ToList().RemoveAt(0).Метод toArray();

Maciej Los

Почему вы загружаете элементы из списка в массив и хотите удалить их первым элементом?

Paulo Zemek

На самом деле вы не можете удалить элементы из массива. Что вы можете сделать, так это создать еще один массив с меньшим количеством элементов и скопировать только те элементы, которые вас интересуют.

Тем не менее, поскольку вы использовали ToList().RemoveAt(0) в своей попытке, почему вы не можете просто иметь список, а не массив, так что вы можете очень легко добавлять или удалять элементы?

2 Ответов

Рейтинг:
2

Maciej Los

Пожалуйста, сначала прочтите мой комментарий к этому вопросу.

Если вы хотите удалить элемент из списка, используйте: ListBox.ObjectCollection.Метод RemoveAt (Int32) (System.Окна.Формы)[^]
Если вы хотите удалить элемент из массива, используйте: Функция Array.removeAt[^]


Рейтинг:
1

Wendelius

Если вы хотите манипулировать только массивом, один простой способ-скопировать данные в переменную into the array и затем изменить ее размер.

Например

Array.Copy(arr, 1, arr, 0, arr.Length - 1);
Array.Resize(ref arr, arr.Length - 1);

ДОБАВЛЕН
-----
Или как предложил Паоло Земек
string[] arr2 = new string[listBox2.Items.Count - 1];
Array.Copy(arr, 1, arr2, 0, arr.Length - 1);


Paulo Zemek

На самом деле метод Resize всегда создает новый массив. Поэтому было бы лучше просто создать новый массив с длиной-1, а затем скопировать непосредственно в новый массив.
Тем не менее, использование списка вместо массива, вероятно, все еще является лучшим вариантом.

Wendelius

Хорошая мысль, добавлено копирование в новый массив.