2012-11-07 13 views
16

Hoffentlich eine einfache Frage an die meisten Programmierer mit etwas Erfahrung.List (of String) oder Array oder ArrayList

Mit welchem ​​Datentyp kann ich das machen?

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) 

Ich würde diese zugreifen wie diese

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

wenn ich Liste verwenden (von String) Ich bin nur in der Lage, eine Sache zu der Liste .ADD (auf einmal), und in meinem Funktion Ich möchte mehrere Werte (gleichzeitig) speichern können.

Lösung:

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 

Antwort

25

List(Of String) damit umgehen wird, vor allem - obwohl müssen Sie entweder AddRange verwenden, um eine Sammlung von Artikeln hinzufügen, oder Add zu fügen Sie einzeln nacheinander hinzu:

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

Wenn Sie bekannte Werte sind hinzufügen, wie Sie zeigen, eine gute Möglichkeit ist, wie etwas zu verwenden: Dies wird Ihnen noch erlauben

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) 

Artikel später hinzufügen, wie gewünscht, sondern auch in schnell Ihre Anfangswerte erhalten.


Edit:

In Ihrem Code, müssen Sie die Erklärung beheben. Wechsel:

Dim lstWriteBits() As List(Of String) 

An:

Dim lstWriteBits As List(Of String) 

Derzeit sind Sie ein Array von Liste deklarieren (Of String) Objekte.

+0

Kann ich auf jedes Element wie Dim etwas wie String = lstOfString (0) zugreifen, um den String1 Wert zu erhalten? – Brandon

+1

@BrandonJ Ich habe gerade bearbeitet, um Ihre Zugriffsanforderungen zu zeigen - das bringt Ihnen, was Sie wollen? –

+0

Vielen Dank für Ihre Hilfe, aber ich mache immer noch falsch, wenn ich das versuche, und einen [Wert des Typs 'system.collections.generic.list (of String)' kann in ein 1-dimensionales Array konvertiert werden System.Colelctions.Generic.List (of String) '] Ich bearbeite meinen Post und zeige meinen aktuellen Code – Brandon

2

Mit keiner Sammlung können Sie Objekte auf diese Weise hinzufügen.

Sie eine Erweiterung macht für examle List(Of String) zu machen haben eine Add Methode, die das tun können:

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 

Jetzt können Sie mehr Wert in einem Aufruf hinzu:

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

Sie können tun, so etwas wie dieses,

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

Collection Initializers

+2

"Dies ist der Einzeiler, den Sie suchen ..." – bendecko

0

Sie können IList(Of String) in der Funktion:

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 

Verwendung list1.AddRange(list2) zu Listen hinzufügen

Hoffe, es hilft.

Verwandte Themen