2012-11-07 7 views
16

経験のあるほとんどのプログラマーにとって、簡単な質問です。List of(String)またはArrayまたはArrayList

これを行うためのデータ型は何ですか?

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) 

私はこの

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

私は(文字列の)リスト を使用する場合、私は唯一の(当時)、そして私の中でリストに一つのことを.addすることができていますようにこれらにアクセスします関数私はいくつかの値を(一度に)保存できるようにしたい。

ソリューション

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 

答えて

25

List(Of String)はほとんどそれを処理するリストAddRange方法に - あなたはどちらかにアイテムのコレクション、またはAddを追加するためにAddRangeを使用する必要があるものの一度に1つずつ追加してください:

lstOfString.Add(String1) 
lstOfString.Add(String2) 
lstOfString.Add(String3) 
lstOfString.Add(String4) 
すぐにあなたの初期値を取得するもこれはまだ、必要に応じて後で項目を追加することができます

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) 

、しかし:あなたはあなたが示すように、既知の値を追加する場合

は、良いオプションのようなものを使用することです。


編集:あなたのコードで

は、あなたが宣言を修正する必要があります。変更を行います。

Dim lstWriteBits() As List(Of String) 

Dim lstWriteBits As List(Of String) 

現在、あなたは(列の)リストの配列オブジェクトを宣言しています。

+0

Dim somethingのような各アイテムにString = lstOfString(0)としてアクセスしてString1値を取得できますか? – Brandon

+1

@BrandonJアクセス要件を表示するように編集しました。 –

+0

ありがとうございました。私はそれを試してみると、間違っています。[type 'system.collections.generic.list(stringの値)'の値を1次元配列に変換できません。 System.Colelctions.Generic.List(Stringの) ']投稿を編集して実際のコードを表示します – Brandon

2

いずれのコレクションでも、そうしたアイテムを追加することはできません。

あなたはexamle List(Of String)はそれを行うことができますAdd法持つために作るために拡張を行うことができます。

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 

今、あなたは1回の呼び出しで複数の値を追加することができた:

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

あなたが行うことができますこのようなもの

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

Collection Initializers

+2

"これはあなたが探しているワンライナーです..." – bendecko

0

あなたは、関数でIList(Of String)を使用することができます。リストに

を追加する

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 

使用 list1.AddRange(list2)はそれがお役に立てば幸いです。