visual basic:对象引用未设置为对象的实例

时间:2013-12-29 19:52:39

标签: .net vb.net object reference

我看了一个视频教程,看到那个人编写并执行下面的代码并且工作但是当我尝试编译我的时,它说“对象引用未设置为对象的实例”。我已经尝试了几件事,看看我能解决问题但无济于事。

Imports System.IO
Public Class Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim myline = New StreamReader("TextFile1.txt")
            Dim line As String = ""
            While Not IsNothing(line)
                line = myline.ReadLine
                If IsNothing(line) Then
                    TextBox2.AppendText(line)
                End If
            End While
            myline.Close()

        Catch ex As Exception

            TextBox2.AppendText(ex.Message)
            MsgBox(ex.Message)

        End Try


    End Sub

End Class

任何人都可以帮忙吗?感谢

5 个答案:

答案 0 :(得分:3)

我认为你错过了

            If Not IsNothing(line) Then
                TextBox2.AppendText(line)
            End If

答案 1 :(得分:2)

this kind of "If Not IsNothing:" is strange kind of.

IsNothing是一个VB-ism而不是.NET语法。其他编码方式包括:

If String(line).IsNullOrEmpty = False Then 
' or 
If Not String(line).IsNullOrEmpty Then 
' which is the same type of garble as Not IsNothing

also:
If Line IsNot Nothing Then

由于IsNothing是一个返回布尔值的VB函数,你也可以只评估它:

If IsNothing(line) = False Then ...

答案 2 :(得分:1)

在条件If IsNothing(line) Then中,您错过了Not

If Not IsNothing(line) Then
    TextBox2.AppendText(line)
End If

答案 3 :(得分:0)

嗯,这很简单:)只是缺少你的对象定义:)

Dim myline = New StreamReader("TextFile1.txt")

-doesnt定义myline。这就像你这样做:

Dim variable = 1

你必须说:

Dim myline as StreamReader = New StreamReader("TextFile1.txt")

因此,在使用值填充之前,Visual Basic会知道您正在创建哪种变量。在VB.NET中有更好,更敏锐的方式读取文件(我个人最喜欢的语言:)),但我相信这对你的应用程序有用。

如果您最终想要将整个文件读取到数组(列表),则可以查看片段以查找将文件读取到字符串的代码,然后使用anystring.split命令将其拆分为列表“vbCRLF”字符(一个结束线,就像你的输入按钮一样)。

答案 4 :(得分:0)

似乎只是调用ReadAllText方法会更容易:

Imports System.IO

Public Class Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            TextBox2.AppendText(File.ReadAllText("TextFile1.txt"))
        Catch ex As Exception
            TextBox2.AppendText(ex.Message)
            MsgBox(ex.Message)
        End Try
    End Sub

End Class