VB удалить последний элемент в динамическом массиве

#arrays #vb.net

#массивы #vb.net

Вопрос:

Мне нужен способ удалить последний элемент в массиве, когда я не знаю, насколько велик массив.

В принципе, мне нужна VB-версия php array_pop, но, похоже, в результатах поиска не появляется ничего подходящего.

Комментарии:

1. Почему бы не использовать List(Of Type) более современный и простой в управлении (LINQ и т.д.)?

Ответ №1:

использовать

 Redim Preserve MyArray (UBound(MyArray) - 1)
  

Комментарии:

1. Я думаю, что это решение… да, это

2. @YsoL8 Для VB6 это не так. Нижняя граница будет потеряна, и вы получите ошибку времени выполнения. Пожалуйста, измените свой вопрос, чтобы уточнить версию VB.

3. @GSerg: ты уверен? Я использую этот код для изменения длины массива именно в vb6 и никогда не сталкивался с ситуацией, когда нижняя граница массива отличается от 0

4. @GSerg vb.net . По крайней мере, это указано в документации курса 🙂

5. Да, это так. Попробуйте: Dim arr() As Long : ReDim arr(1 To 10) : ReDim Preserve arr(UBound(arr) - 1) . Ошибка времени выполнения 9: нижний индекс вне диапазона. Конечно, это будет работать нормально, если нижняя граница 0 . Но в VB6 это часто не так. Это отличная, просто замечательная вещь.

Ответ №2:

VB6:

 redim preserve arr(lbound(arr) to ubound(arr) - 1)
  

VB.NET:

 redim preserve arr(arr.GetUpperBound(0) - 1)