1

我只是想知道是否有人能指出我的代码哪里出错了。我正在使用一个名为 Nouns 的 ArrayList 并有代码将从 中选择的单词添加ArrayList到另一个ArrayList名为NewArray().

问题是,当从 label_click 事件调用 Sub 时,它不会保留存储在代码所在的 NewArray 中的单词NewArray.Add(WordChosen)。我通过使用断点和单步调试它发现了这一点。

这部分的代码在这里:

Sub GetNoun()

    Dim Nouns As ArrayList = New ArrayList(16)
    Nouns.Add("France")
    Nouns.Add("Bird")
    Nouns.Add("Doctor")
    Nouns.Add("City")
    ...

    Dim lblArray As Label() = {lblOne, lblTwo, lblThree, lblFour}

Start:
    Dim WordChosen As String
    WordChosen = Nouns(Random.Next(16))

    If NewArray.Contains(WordChosen) Then
        GoTo Start
    Else
        Dim LabelChosen As Label
        LabelChosen = lblArray(Random.Next(4))
        LabelChosen.Text = WordChosen
        Nouns.Remove(WordChosen)
        NewArray.Add(WordChosen)
    End If
End Sub

我该怎么做才能将单词保留在动态 ArrayList 中?我希望这是有道理的,不是重复的,但我被困住了。

4

1 回答 1

2

您的列表是一个局部变量。

每次调用该函数时,都会得到一个新变量。

您应该将其移至类以创建单个字段,并在构造函数中对其进行初始化。

于 2013-09-03T17:39:37.967 回答