变量'Name'在被赋值之前使用它

  • 本文关键字:赋值 Name 变量 vb.net
  • 更新时间 :
  • 英文 :


你好,我想做一个聊天,我在互联网上搜索,我终于找到了一些可能工作。但是现在我在name处得到一个错误,它说变量名在赋值之前被使用

代码:

Public Sub findForm1()
    If Trim(Mid(My.Forms.Private1.Text, My.Forms.Private1.Text.Length - 2)) = formNo Then
        My.Forms.Private1.RichTextBox1.Text = My.Forms.Private1.RichTextBox1.Text & poruka + vbCrLf
    ElseIf Trim(Mid(My.Forms.Private2.Text, My.Forms.Private2.Text.Length - 2)) = formNo Then
        My.Forms.Private2.RichTextBox1.Text = My.Forms.Private2.RichTextBox1.Text & poruka + vbCrLf
    Else
        If My.Forms.Private1.Visible = False Then
            Dim name As String
            For i As Integer = 1 To poruka.Length
                If Mid(poruka, i, 2) = ": " Then
                    Exit For
                    name = name & Mid(poruka, i, 1)
                End If
            Next
            My.Forms.Private1.Show()
            My.Forms.Private1.Text = Trim(name) & "   " & br
            My.Forms.Private1.RichTextBox1.Text = My.Forms.Private1.RichTextBox1.Text & poruka + vbCrLf
        Else
            Dim name As String
            For i As Integer = 1 To poruka.Length
                If Mid(poruka, i, 2) = ": " Then
                    Exit For
                End If
                name = name & Mid(poruka, i, 1)
            Next
            My.Forms.Private2.Show()
            My.Forms.Private2.Text = Trim(name) & "   " & br
            My.Forms.Private2.RichTextBox1.Text = My.Forms.Private2.RichTextBox1.Text & poruka + vbCrLf
        End If
    End If
    formNo = Nothing
    poruka = Nothing
End Sub

如何修复这个错误??我已经试过移动if的末端,并改变一些其他的末端。

是的,编译器是完全正确的。代码中的问题可以归结为如下内容:

Dim name as String
name = name & "Foo"

您正在尝试将name当前值与另一个字符串("Foo")连接-但name没有值。

可以改成:

Dim name as String = ""
name = name & "Foo"

…但你最好使用StringBuilder。例如,第一个循环可以是:

Dim nameBuilder As StringBuilder = New StringBuilder()
For i As Integer = 1 To poruka.Length
    If Mid(poruka, i, 2) = ": " Then
        Exit For
        nameBuilder.Append(Mid(poruka, i, 1))
    End If
Next
My.Forms.Private1.Show()
My.Forms.Private1.Text = Trim(nameBuilder.ToString()) & "   " & br

问题是有几种情况可能导致变量从未被初始化。要修复,只需给出一个默认值,例如

Dim Name As String = ""

同样,你是重新声明相同的变量两次,你只需要这样做一次,只是清除它再次如果你需要它是"空白"为下一个循环或使用两个单独的变量(即更具体地命名)代替。

最新更新