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

VB.NET自定义类类型数组赋值触发空引用异常问题求解

问题根因

PowerArray是引用类型,你声明Public Shared CharPowers(100) As PowerArray时,仅创建了固定长度的数组容器,数组内所有元素默认初始化为Nothing,没有生成实际的PowerArray类实例。直接访问未实例化元素的属性,就会触发空引用异常。

修复方案

方案1:保持现有数组结构,赋值前先实例化对应下标的对象

在给指定下标元素的属性赋值前,先初始化该位置的PowerArray实例,示例代码如下:

' 先实例化当前下标对应的对象
GVar.CharPowers(GVar.PCount) = New PowerArray()
' 再进行属性赋值
GVar.CharPowers(GVar.PCount).Name = txtPowerName.Text
' 其他属性赋值操作
' 赋值完成后更新计数
GVar.PCount += 1

方案2:改用动态集合优化实现(更推荐)

固定长度数组存在长度上限、空元素冗余等问题,改用List(Of T)可以避免上述问题,无需手动维护计数:

  1. 修改GVar类定义:
Public Class GVar
    Public Shared CharPowers As New List(Of PowerArray)
End Class
  1. 新增元素的逻辑调整为:
' 实例化新对象并赋值属性
Dim newPower As New PowerArray()
newPower.Name = txtPowerName.Text
' 其他属性赋值
' 直接添加到集合
GVar.CharPowers.Add(newPower)
' 元素总数可通过GVar.CharPowers.Count直接获取
额外优化建议

你当前使用的ArrayList属于过时的非强类型集合,建议将PowerArray类中的Tags属性替换为强类型List(Of T),例如存储字符串时可修改为Public Tags As New List(Of String),避免运行时类型转换错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:02