定义数组全局变量出现"未将对象引用设置到对象的实例"

tioncai 2007-02-01 07:50:13
定义数组全局变量
代码如下:
Imports System.Data.OleDb
Public Class Form1
Inherits System.Windows.Forms.Form

'窗体代码
....
Dim id() As Integer '因大小不确定而不定义数组大小

Sub list()
Try
Dim cn As New OleDbConnection(".....")
cn.Open()
Dim cmd As New OleDbCommand("select id,name from code", cn)
Dim reader As OleDbDataReader = cmd.ExecuteReader()
Dim int As Integer = reader.FieldCount
Dim i As Integer = 0

Do While reader.Read
Me.ListBox.Items.Add(reader.GetValue(1))
Me.id(i) = CType(reader.GetValue(0), Integer)
i = i + 1
Loop
'其他代码
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
End Class

当调用list()出现"未将对象引用设置到对象的实例"
目前解决办法是定义Dim id() As Integer 为Dim id(10000) As Integer
请给出解决办法
...全文
403 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tioncai 2007-02-02
  • 打赏
  • 举报
回复
谢谢大家的帮助,万分感谢。
xylys521 2007-02-02
  • 打赏
  • 举报
回复
我记得VB中对动态数组要Redim id(X)
,你可以试试!
viena 2007-02-01
  • 打赏
  • 举报
回复
用泛型集合List(Of T)比较好

'定义
Dim id As New List(Of Integer)

'添加
id.Add(CType(reader.GetValue(0), Integer))

viena 2007-02-01
  • 打赏
  • 举报
回复
Do While reader.Read
Me.ListBox.Items.Add(reader.GetValue(1))
Me.id(i) = CType(reader.GetValue(0), Integer)
i = i + 1
Loop

=>

Do While reader.Read
ReDim Preserve Me.id(i)
Me.ListBox.Items.Add(reader.GetValue(1))
Me.id(i) = CType(reader.GetValue(0), Integer)
i = i + 1
Loop
vengair 2007-02-01
  • 打赏
  • 举报
回复
长度不定的数组
用泛型 List<int> 吧
或者用 ArrayList

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧