List(of String)或Array或ArrayList

时间:2012-11-07 16:30:40

标签: vb.net list collections

希望对大多数具有一定经验的程序员来说是一个简单的问题。

允许我这样做的数据类型是什么?

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) 我只能在列表中添加一个东西(一次),在我的函数中,我希望能够存储多个值(一次)。

解决方案:

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

7 个答案:

答案 0 :(得分:31)

List(Of String)会主要处理这个问题 - 尽管您需要使用AddRange添加项目集合,或Add一次添加一个项目:

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)对象数组。

答案 1 :(得分:24)

你可以这样做,

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

Collection Initializers

答案 2 :(得分:4)

这两个系列都不会让你以这种方式添加项目。

您可以进行扩展以使考试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

现在您可以在一次通话中添加多个值:

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

答案 3 :(得分:3)

查看列表AddRange方法here

答案 4 :(得分:1)

有时我不想在实例化时将项目添加到列表中。

实例化空白列表

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

答案 5 :(得分: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)添加列表

希望它有所帮助。

答案 6 :(得分:0)

对于那些坚持维护旧.net的人来说,这是在.net framework 2.x中工作的一种:

Dim lstOfStrings As New List(of String)( new String(){"v1","v2","v3"} )