【发布时间】:2013-12-03 20:33:16
【问题描述】:
当我运行一个我制作的 VB.NET 控制台程序时,我不断弹出一个窗口,它只是说“对象引用未设置为对象的实例”。窗口甚至没有说“错误”或任何东西——标题只是项目的名称。但是...我假设这是我不想要的。
我搜索了一下,发现有关类似消息的帖子,但无法弄清楚它们如何适用于我的情况。
这是我的一些代码。 (这个程序应该从一个预先格式化的描述河流横截面几何形状的文本文件中获取一些数据,并系统地输入一些新的几何数据来表示正在以某种方式清理/清理的河床,然后编写新数据以类似格式保存到新文件中。)
Imports System
Imports System.IO
Imports Microsoft.VisualBasic.FileIO
Module module1
Public Sub Main()
Using sr As New StreamReader("C:\inputfile.txt")
Using outfile As New StreamWriter("C:\outputfile.txt")
Dim line As String = ""
Dim styles As Globalization.NumberStyles
styles = Globalization.NumberStyles.AllowLeadingSign Or Globalization.NumberStyles.AllowDecimalPoint
Dim stations(-1) As Double
Dim elevations(-1) As Double
Dim i As Integer = 0
Do
Try
line = sr.ReadLine()
Dim stringarray() As String = line.Split()
ReDim Preserve stations(i)
ReDim Preserve elevations(i)
stations(i) = Double.Parse(stringarray(0), styles)
elevations(i) = Double.Parse(stringarray(1), styles)
Catch ex As Exception
MsgBox(ex.Message)
End Try
i = i + 1
Loop Until line Is Nothing
Dim min As Double = elevations(0)
(some more code.....)
End Using
End Using
End Sub
End Module
我只包含了我的代码的第一部分,因为当我在“循环直到行是空的”语句中放置一个中断时,直到我经历了中断之后才出现消息,但是当我放置中断时在“Dim min As Double = elevations(0)”语句中,该消息在程序到达中断之前出现。
我真的不明白我的代码有什么问题。有人有什么想法吗?
谢谢!
【问题讨论】:
-
我看到很多人已经回答过了。我的两分钱,一般来说,
Object Reference Not Set to an Instance of an Object错误指的是不应该是 null 的东西。您基本上需要在第一行放置一个断点,逐步执行,直到您看到抛出的内容,我将成为它的null。从每个人的回答看来,您创建了一个数组并且从未将其调暗到正确的长度。想象一下拿一分钱,试图把它放在一个带盖的罐子里,而你甚至从未指定罐子应该有多大。 -
要关闭错误,注释掉
Try/Catch(错误显然是在其中抛出的,因此有消息但没有错误消息)。当代码因错误而停止时,将鼠标光标移到i(它是 0 还是更高?)并尝试您是否可以看到实际上是哪个变量导致了错误。
标签: vb.net