Vb.net 列表(字符串)或数组或ArrayList

Vb.net 列表(字符串)或数组或ArrayList,vb.net,list,collections,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 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)
如果我使用列表(字符串) 我只能在列表中添加一个值(一次),在我的函数中,我希望能够存储多个值(一次)

解决方案:

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

查看List
AddRange
方法

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) 
致:


当前,您正在声明一个列表(字符串)对象数组。

两个集合都不允许您以这种方式添加项

您可以对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

你可以这样做

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

您可以在函数中使用
IList(字符串)

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)
添加列表


希望能有所帮助。

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

实例化一个空白列表

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

对于那些无法维护旧.net的用户,下面是一个在.net framework 2.x中工作的:

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

我是否可以访问每个项,如Dim something as String=lstOfString(0)以获取String1值?@BrandonJ我刚刚编辑以显示您的访问要求-这可以满足您的需要?非常感谢您的帮助,但我尝试这样做时仍然犯了错误,并获取了[value of type'system.collections.generic.list(字符串类型))'不能转换为System.ColelOptions.Generic.List(字符串)的一维数组]]我要编辑我的帖子并显示我的实际code@BrandonJ看起来您的声明是错误的-您可能有一个额外的
()
。请参阅上面我的声明中的尺寸线…“这是您正在寻找的一个线条…”我喜欢扩展方法。
Dim blankList作为新列表(字符串)
而不是您的列表如何?
For Each item in blankList
  ' write code here, for example:
  Console.WriteLine(item)
Next
Dim lstOfStrings As New List(of String)( new String(){"v1","v2","v3"} )