VB删除动态数组中的最后一个元素

5
我需要一种方法来删除数组中的最后一个元素,但我不知道数组的长度。
基本上,我需要VB版本的php array_pop函数,但是在搜索结果中似乎没有找到任何相关信息。

为什么不使用List(Of Type)呢?它更加现代化和易于操作(LINQ等...)。 - Eminem
2个回答

17

使用

Redim Preserve MyArray (UBound(MyArray) - 1)

我认为那就是解决方案……是的,没错。 - YsoL8
@YsoL8 对于VB6来说不行。下限将会丢失,你会得到一个运行时错误。请重新标记你的问题以澄清VB版本。 - GSerg
@GSerg:你确定吗?我正在使用这段代码在VB6中精确地改变数组长度,从未遇到过下限与0不同的情况。 - heximal
@GSerg vb.net. 至少在课程文档上是这样写的 :) - YsoL8
2
是的,我是。尝试:Dim arr() As Long: ReDim arr(1 To 10): ReDim Preserve arr(UBound(arr)-1)。运行时错误9:下标越界。当然,如果下限为0,它将正常工作。但在VB6中,通常不是这样。这是一件非常好的事情。 - GSerg
@GSerg 非常感谢您的建议,经过无数次尝试才找到为什么我的 ReDim 不起作用。我以为 ReDim 会自动确定下限,但似乎并非如此。这是我一段时间以来第一次使用 VBA,仍然困扰着我,有些函数返回的数组从1开始而不是0。无论如何,非常感谢! - devbf

6

VB6:

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

VB.NET:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接