2012-11-07 3 views
16

일부 경험을 가진 대부분의 프로그래머에게 간단한 질문을하기를 바랍니다.List of String (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) 

내가 (문자열의)리스트를 사용하는 경우 내가 (한 번에) 목록에 한 가지를 .add에만 수 있어요 이

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

처럼이 액세스하고있는 것입니다 내 함수 나는 한 번에 여러 값을 저장할 수 있기를 원한다.

솔루션

:

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를 사용해야하지만 한 번에 하나씩 추가하십시오 :

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 (of String)'값을 1 차원 배열로 변환 할 수 없습니다. System.Colelctions.Generic.List (String 중) '] 내 게시물을 편집하고 실제 코드를 표시합니다. – Brandon

2

어느 컬렉션도 그런 방식으로 항목을 추가 할 수 없습니다.

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 

는 이제 하나의 호출에 여러 값을 추가 할 수 있습니다 :

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

당신이 할 수있는

당신은 examle List(Of String) 있도록하는 확장을 할 수

그렇게 할 수있는 Add 방법을 이런 식으로,

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)이 목록

희망은 도움을 추가 할 수 있습니다.

관련 문제