为什么我在vb.net中遇到此错误?

时间:2013-11-05 07:25:25

标签: vb.net exception global-variables declaration

enter image description here
希望你能看到我错过了什么。
我尝试从公共类globalv

获取此变量后发生此错误
public shared ip() as string

我删除了这个课程,但仍然收到此错误..

我确实希望我的变量是“全局的”,所以每次我需要它时都不会创建一个新实例。所以我尝试将它放在顶部以使其在表单中全局化。

Public Class Form1
#Region "variables"
    Delegate Sub SetTextCallback(ByVal [text] As String)
    Dim x As New SetTextCallback(AddressOf ReceivedText)
    Dim stringOfRtb As String = rtb.Text
    Dim incoming() As String

    Dim ip() As String
#End Region

Private Sub btnSaveIP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveIP.Click
    incoming = stringOfRtb.Split(ControlChars.CrLf.ToCharArray) ''vcrlf splitter

    ip = incoming(3).Split(":"c)
    txtSend.Text = "set ip local " & ip(1)
    End sub

Private Sub btnSettings_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSettings.Click
    ip = incoming(3).Split("="c)
    txtIP.Text = ip(1)
    End sub
你能看到什么问题吗?它在此之前一直在工作.. :(

2 个答案:

答案 0 :(得分:0)

如果您正在尝试创建一个“全局”变量以供整个应用程序使用,那么在模块而不是类中更好。只需在应用程序的根命名空间中创建一个名为“Globals”的模块,然后声明变量Public ip() As String(并为其赋值),然后您就可以从该应用程序中调用它。 您的问题实际上似乎即将到来,因为您的某些值分配给ip()的事实并未提供对数组中哪个元素的引用(例如ip = incoming(3).Split(":"c)应该类似于ip(1) = incoming(3).Split(":"c)

答案 1 :(得分:0)

此字段声明:

Dim stringOfRtb As String = rtb.Text

stringOfRtb设置为创建表单的时间的rtb.Text的值。 a)rtb尚未初始化,或者b)rtb.Text此时可能Nothing。它永远不会将自己更新为任何其他值,因此(对于b):

incoming = stringOfRtb.Split(ControlChars.CrLf.ToCharArray)

将尝试在不存在的字符串上调用Split


这些是我最好的猜测 - 但如果两者都不对,你需要学习 debug

我假设(对于b)您在按下保存按钮时出现错误(这是一个假设,因为您没有告诉我们您的&# #39;重新触发错误)。

如果是这种情况,那么你需要在btnSaveIP_Click方法的第一行设置一个断点,然后按下按钮 - 然后你可以检查每个变量的状态并找出哪个一个是Nothing以及何时。