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

VB.Net中二维MazeCellInfo数组出现NullReferenceException的原因?

VB.Net中System.NullReferenceException异常原因分析

这段代码抛出System.NullReferenceException的核心原因是:你只声明了二维数组的结构,但数组中的每个MazeCellInfo对象都没有被实例化。

在VB.Net中,当创建引用类型的数组时,数组的所有元素默认值都是Nothing(等价于C#里的null)。你直接通过With MazeCell(X, Y)访问数组元素的属性时,本质是在操作一个未初始化的空对象,自然会触发空引用异常。

修复方法

在循环中先给每个数组元素创建MazeCellInfo实例,再设置属性:

Private Sub NewMazeGrid()
    Dim X As Integer
    Dim Y As Integer

    'Create an 2d array with MazeCell object
    Dim MazeCell(nudX.Value, nudY.Value) As MazeCellInfo
    For X = 0 To nudX.Value - 1
        For Y = 0 To nudY.Value - 1
            '先实例化MazeCellInfo对象
            MazeCell(X, Y) = New MazeCellInfo()
            With MazeCell(X, Y)
                .NorthWall = "Wall"
                .SouthWall = "Wall"
                .EastWall = "Wall"
                .WestWall = "Wall"
            End With
        Next
    Next

    '注意:需确保nudX.Value >5 且 nudY.Value>5,否则会触发索引越界异常
    lSample.Text = MazeCell(5, 5).EastWall
End Sub

额外提醒:最后一行访问MazeCell(5,5)时,如果nudX.Value或nudY.Value的值小于等于5,后续还会触发IndexOutOfRangeException,需要根据实际需求处理数组边界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:22:39