web-dev-qa-db-ja.com

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)

list(of String)を使用する場合、リストに追加できるのは(一度に)1つだけで、関数では(一度に)複数の値を格納できるようにしたいです。

解決策:

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
23
Brandon

List(Of String)がそれを処理します。ほとんどの場合、AddRangeを使用してアイテムのコレクションを追加するか、Addを使用して一度に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) 

現在、List(Of String)オブジェクトの配列を宣言しています。

33
Reed Copsey

このようなことができます

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

コレクション初期化子

24
bluebunny72

どちらのコレクションでもアイテムをそのように追加することはできません。

例えば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)
4
Guffa

リストAddRangeメソッドを見る here

3
Riccardo

リストをインスタンス化するときに、リストに項目を追加したくない場合があります。

空白のリストをインスタンス化する

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

リストに追加する

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

リストをループする

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

関数で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)を使用してリストを追加します

それが役に立てば幸い。

0
Binny