web-dev-qa-db-fra.com

List (of String) ou Array ou ArrayList

J'espère une question simple à la plupart des programmeurs expérimentés. 

Quel est le type de données qui me permet de faire cela?

Dim lstOfStrings as *IDK*

Dim String0 As String = "some value"
Dim String1 As String = "some value"
Dim String2 As String = "some value"
Dim String3 As String = "some value"
Dim String4 As String = "some value"
Dim String5 As String = "some value"


lstOfStrings.add(String0, String1, String2, String3)

Je voudrais accéder à ceux-ci comme ça

Dim s1 = lstOfStrings(0)
Dim s2 = lstOfStrings(1) 
Dim s3 = lstOfStrings(2) 
Dim s4 = lstOfStrings(3)

si j'utilise List (of String) Je ne peux ajouter qu'une chose à la liste (à la fois) et dans ma fonction, je veux pouvoir stocker plusieurs valeurs (à la fois).

Solution:

Private Function Foo() As List(Of String)


    Dim temp1 As String
    Dim temp2 As String 
    Dim temp3 As String 

    Dim temp4 As String 
    Dim temp5 As String 
    Dim temp6 As String 

    Dim inputs() As String = {temp1, temp2, temp3, temp4, temp5, temp6}

    Dim lstWriteBits As List(Of String) = New List(Of String)(inputs)


    Return lstWriteBits
End Function
18
Brandon

List(Of String) gérera cela, principalement - bien que vous deviez soit utiliser AddRange pour ajouter une collection d'éléments, soit Add pour en ajouter un à la fois:

lstOfString.Add(String1)
lstOfString.Add(String2)
lstOfString.Add(String3)
lstOfString.Add(String4)

Si vous ajoutez des valeurs connues, comme vous le montrez, une bonne option consiste à utiliser quelque chose comme:

Dim inputs() As String = { "some value", _
                              "some value2", _
                              "some value3", _
                              "some value4" }

Dim lstOfString as List(Of String) = new List(Of String)(inputs)

' ...
Dim s3 = lstOfStrings(3)

Cela vous permettra quand même d’ajouter des éléments plus tard, si vous le souhaitez, mais aussi d’obtenir rapidement vos valeurs initiales.


Modifier:

Dans votre code, vous devez corriger la déclaration. Changement:

Dim lstWriteBits() As List(Of String) 

À:

Dim lstWriteBits As List(Of String) 

Actuellement, vous déclarez un tableau d'objets Array of List (Of String).

29
Reed Copsey

Vous pouvez faire quelque chose comme ça, 

  Dim lstOfStrings As New List(Of String) From {"Value1", "Value2", "Value3"}

Initialiseurs de collection

21
bluebunny72

regardez la méthode List AddRangehere

3
Riccardo

Aucune collection ne vous permettra d'ajouter des éléments de cette façon.

Vous pouvez faire une extension pour faire pour examiner List(Of String) avoir une méthode Add qui peut le faire

Imports System.Runtime.CompilerServices
Module StringExtensions

  <Extension()>
  Public Sub Add(ByVal list As List(Of String), ParamArray values As String())
    For Each s As String In values
      list.Add(s)
    Next
  End Sub

End Module

Maintenant, vous pouvez ajouter plusieurs valeurs en un seul appel:

Dim lstOfStrings as New List(Of String)
lstOfStrings.Add(String1, String2, String3, String4)
3
Guffa

Vous pouvez utiliser IList(Of String) dans la fonction:

Private Function getWriteBits() As IList(Of String)


Dim temp1 As String
Dim temp2 As Boolean
Dim temp3 As Boolean


'Pallet Destination Unique
Dim temp4 As Boolean
Dim temp5 As Boolean
Dim temp6 As Boolean

Dim lstWriteBits As Ilist = {temp1, temp2, temp3, temp4, temp5, temp6}

Return lstWriteBits
End Function

utiliser list1.AddRange(list2) pour ajouter des listes

J'espère que ça aide.

0
Binny

Parfois, je ne veux pas ajouter d'éléments à une liste lorsque je l'instancie. 

Instancier une liste vierge

Dim blankList As List(Of String) = New List(Of String)

Ajouter à la liste

blankList.Add("Dis be part of me list") 'blankList is no longer blank, but you get the drift

Parcourez la liste

For Each item in blankList
  ' write code here, for example:
  Console.WriteLine(item)
Next
0
thedanotto