You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ReDim后初始化数组(无需保留数据)的更优实现方法咨询

不同开发环境下的优化方案

你当前的写法逻辑是完全正确的,无Preserve关键字的ReDim本身就会直接分配新数组、丢弃旧数据,没有额外的内存拷贝开销,符合你不需要保留原有数据的需求。针对不同的VB语言环境,可以进一步简化代码:

VB.NET 环境

可以直接用LINQ语法一步完成数组的声明、分配、初始化,省去手动写循环的步骤,运行效率和手动循环完全一致:

' 长度为5,下标范围0~4,对应你原写法的ReDim Test(4)
Dim Test As MyObject() = Enumerable.Range(0, 5).Select(Function(i) New MyObject()).ToArray()

如果确实需要先分配数组再单独初始化,你现有写法已经是最优实现,没有优化空间。

VB6/VBA 环境

没有内置语法糖可以省略循环,你现有写法已经是性能最优的实现。如果想简化重复编码的工作量,可以封装通用初始化函数复用逻辑:

' 通用数组初始化函数
Function InitObjectArray(ByVal elementCount As Integer, ByVal classFullName As String) As Object()
    Dim arr() As Object, i As Integer
    ReDim arr(elementCount - 1)
    For i = 0 To UBound(arr)
        Set arr(i) = CreateObject(classFullName)
    Next
    InitObjectArray = arr
End Function

' 调用示例
Dim Test() As MyObject
Test = InitObjectArray(5, "你的工程名.MyObject")

注意:VB6/VBA中没有数组的Count()方法,需要替换为UBound(Test)获取数组最大下标。

内容的提问来源于stack exchange,提问作者jocoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:36:04