#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)