Как взять элементы из списка в Visual Basic - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь взять элементы, которые уже добавили в список.

        Dim lista As New List(Of String)
        n = 2
        i = 0
        Do While i < n + 1
            Randomize()
            a = Int(Rnd() * 4) + 1
            If a = 1 Then
                lista.Add("1b")
            ElseIf a = 2 Then
                lista.Add("2b")
            ElseIf a = 3 Then
                lista.Add("3b")
            ElseIf a = 4 Then
                lista.Add("4b")
            End If
            i = i + 1
        Loop

Давайте представим, что список, который я получил, был {2b, 4b, 1b}. Теперь я хочу знать, как получить, скажем, просто 2b из списка в качестве первого элемента, а затем удалить его из списка.

Ответы [ 2 ]

3 голосов
/ 31 марта 2020

Это было бы хорошим местом для использования Queue(Of ).

Dim item As String

item = queuea.Dequeue

Но List(Of ) имеет индексатор, так что вы можете просто использовать его как массив:

Dim item As String

item = lista(0)
' Then remove the first item:
lista.RemoveAt(0)
0 голосов
/ 31 марта 2020

Используйте класс. net Random вместо старых методов VB6. Вызов Random.Next(Interger1, Integer2) вернет Integer, равное или большее, чем Integer1 и меньшее, чем Integer2. Обратите внимание, что, поскольку значения настолько ограничены, существует большая вероятность наличия дубликатов в списке.

Хотя сработает несколько ElseIf s, Select Case легче читать и меньше печатать.

Я поместил содержимое списка в ListBox, чтобы мы могли видеть, что происходит. Я использовал Remove метод List(Of T) и затем связал ListBox.

Private lista As New BindingList(Of String)
Private rand As New Random

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    BuildList()
    ListBox1.DataSource = lista
End Sub

Private Sub BuildList()
    Dim i = 0
    Dim a As Integer
    Do While i < 3 'since n never changes just use the literal value
        a = rand.Next(1, 5)
        Select Case a
            Case 1
                lista.Add("1b")
            Case 2
                lista.Add("2b")
            Case 3
                lista.Add("3b")
            Case 4
                lista.Add("4b")
        End Select
        i = i + 1
    Loop

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Remove from list
    lista.Remove(ListBox1.SelectedItem.ToString)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...