对象引用未设置为对象的实例

sef*_*sef 2 vb.net

我在VB.net中遇到错误"对象引用没有设置为对象的实例".你能告诉我这个错误的原因是什么吗?谢谢..

Nes*_*cio 9

该对象在使用前尚未初始化.

在代码文件的顶部键入:

Option Strict On
Option Explicit On
Run Code Online (Sandbox Code Playgroud)


tor*_*ial 5

sef,如果问题出在数据库返回结果上,我认为是在这种情况下:

   dsData = getSQLData(conn,sql, blah,blah....)
   dt = dsData.Tables(0)  'Perhaps the obj ref not set is occurring here
Run Code Online (Sandbox Code Playgroud)

要解决这个问题:

  dsData = getSQLData(conn,sql, blah,blah....)
   If dsData.Tables.Count = 0 Then Exit Sub
   dt = dsData.Tables(0)  'Perhaps the obj ref not set is occurring here
Run Code Online (Sandbox Code Playgroud)

编辑:添加了代码格式标签...


And*_*ely 5

让我们解构错误消息。

“对象引用”是指您在代码中使用的引用对象的变量。对象变量可能已由您声明,或者您可能只是使用在另一个对象内声明的变量。

“instance of object”表示对象是空白的(或者用VB来说,“ Nothing ”)。当您处理对象变量时,您必须在引用它之前创建该对象的实例

“未设置为”表示您试图访问一个对象,但其中没有可供计算机访问的任何内容。

如果您创建一个变量,如

Dim aPerson as PersonClass
Run Code Online (Sandbox Code Playgroud)

您所做的只是告诉编译器 aPerson 将代表一个人,而不是代表什么人。

您可以使用“New”关键字创建对象的空白副本。例如

Dim aPerson as New PersonClass
Run Code Online (Sandbox Code Playgroud)

如果您希望能够通过测试查看对象是否“无”

If aPerson Is Nothing Then
    aPerson = New PersonClass
End If
Run Code Online (Sandbox Code Playgroud)

希望有帮助!