对象引用未设置为对象的实例
时间:2020-03-06 14:42:01 来源:igfitidea点击:
我在VB.net中遇到错误"对象引用未设置为对象实例"。我们能告诉我该错误的原因是什么?谢谢..
解决方案
该对象在使用前尚未初始化。
在代码文件的顶部,键入:
Option Strict On Option Explicit On
通常,在.NET运行时下,只要取消引用未分配或者分配了值Nothing的变量(在VB.Net中为C#的null),就会发生这种情况。
Option Strict On和Option Explicit On检测可能发生这种情况的实例,但是可以从另一个函数调用中获取null / Nothing:
Dim someString As String = someFunctionReturningString(); If ( someString Is Nothing ) Then Sysm.Console.WriteLine(someString.Length); // will throw the NullReferenceException End If
NullReferenceException是"未将对象引用设置为对象实例"的来源。
我们可以在应用程序中放置日志记录机制,以便可以隔离错误原因。 Exception对象具有StackTrace属性,该属性是描述调用堆栈内容的字符串,最新的方法调用排在最前面。通过查看它,我们将详细了解可能导致异常的原因。
塞夫
如果问题出在数据库返回结果上,我认为是在这种情况下:
dsData = getSQLData(conn,sql, blah,blah....) dt = dsData.Tables(0) 'Perhaps the obj ref not set is occurring here
要解决此问题,请执行以下操作:
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
编辑:添加了代码格式标记...
并且,如果我们认为在数据库查询没有返回任何数据时发生这种情况,那么也许我们应该在对结果进行操作之前对其进行测试?
Dim result As String = SqlCommand.ExecuteScalar() 'just for scope' If result Is Nothing OrElse IsDBNull(result) Then 'no result!' End If
使用数据库时,尝试从不存在的字段或者行中获取值时会出现此错误。即,如果我们使用的是数据集,则使用:
Dim objDt as DataTable = objDs.Tables("tablename")
如果表名在数据集中不存在,则会得到对象"引用未设置为对象的实例"。数据集中的行或者字段相同。