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

VB类中如何定义无预指定长度的二维数组且不影响GetLength等方法使用

解决方案

问题原因

你遇到的GetLength无法正常使用,通常是两个原因导致:

  1. 修改声明时漏写了二维数组标识(,),只写了Public board As Object,编译期board被识别为普通Object类型,不识别数组方法;
  2. 数组还未完成赋值初始化,就调用GetLength引发空引用异常。

正确实现步骤

  • 第一步:修改Maze类中board的声明,明确指定为动态二维数组,不要丢失数组维度标识(,):
Class Maze
    ' 声明为未指定长度的二维Object数组,不要写成 Public board As Object
    Public board(,) As Object 
End Class
  • 第二步:通过对象初始化器赋值后,就可以正常调用GetLength方法:
' 初始化10*10迷宫
Dim maze1 As New Maze With {.board = {
    {" ", " ", "X", "X", " ", "X", "X", "X", " ", "X"},
    {"X", " ", " ", " ", " ", "X", " ", " ", " ", "X"},
    {" ", " ", "X", " ", "X", " ", " ", " ", " ", "X"},
    {"X", " ", "X", " ", " ", "X", "X", "X", " ", " "},
    {"X", " ", "X", "X", " ", " ", " ", " ", "X", " "},
    {" ", "X", " ", " ", "X", " ", " ", "X", " ", " "},
    {" ", "X", "X", " ", "X", " ", " ", " ", " ", "X"},
    {" ", " ", " ", " ", " ", "X", "X", " ", " ", "X"},
    {"X", "X", " ", "X", " ", " ", " ", "X", " ", " "},
    {" ", " ", " ", "X", "X", " ", " ", " ", "X", " "}
}}
  • 第三步:调用GetLength获取维度长度,参数0对应第一维(行数),参数1对应第二维(列数):
' 输出10,即第一维长度
Console.WriteLine(maze1.board.GetLength(0))
' 输出10,即第二维长度
Console.WriteLine(maze1.board.GetLength(1))

扩展:支持自定义尺寸的迷宫

如果需要灵活创建不同尺寸的迷宫,可以给Maze类添加构造函数,提前初始化数组:

Class Maze
    Public board(,) As Object 
    ' 带参数的构造函数,指定行列数初始化数组
    Sub New(rows As Integer, cols As Integer)
        ReDim board(rows - 1, cols - 1)
    End Sub
    ' 保留无参数构造函数,支持对象初始化器赋值
    Sub New()
    End Sub
End Class

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:54:01