给数组添加值

问题描述:

我试图运行一个事件,它将搜索给定目录中的不同文件。目标是让它搜索以“SP_”开头的所有文件,这些文件是包含存储过程的.sql文件。然后,我想将这些程序的完整文本添加到稍后使用的数组中。这在运行时会导致错误,我相信这是因为'FullProcedureArray()',我尝试加载的字符串数组没有定义边界。当我将其声明为'FullProcedureArray(7)'或其他值时,它似乎运行良好。但我不想为'FullProcedureArray'硬编码边界;我宁愿让它由文件夹中的文件数量来定义。给数组添加值

我的问题:有没有一种方法来声明'FullProcedureArray'而不必给它一个绝对值?我可能只是错过了一些显而易见的东西,但过去我没有用过这种类型的数组。在此先感谢您的帮助。

Dim AppDataLocation As String = "C:\Files\TestFiles\" 
    Dim ProcedureArray As String() 
    Dim ProcedureText As String 
    Dim FullProcedureArray() As String 

    Dim sourceDirectoryInfo As New System.IO.DirectoryInfo(AppDataLocation) 

    Dim fileSystemInfo As System.IO.FileSystemInfo 
    Dim i As Integer = 0 
    For Each fileSystemInfo In sourceDirectoryInfo.GetFileSystemInfos 
     If (fileSystemInfo.Name.Contains("SP_")) Then 
      ProcedureArray = System.IO.File.ReadAllLines(AppDataLocation & fileSystemInfo.Name) 
      ProcedureText = Join(ProcedureArray, "") 
      FullProcedureArray.SetValue(ProcedureText, i) 
      i = (i + 1) 
     End If 
    Next 

阵列通过定义具有固定的上限。如果你不想要一个固定的上限,不要使用数组。使用中,例如,一个List(Of String)代替:

Dim AppDataLocation As String = "C:\Files\TestFiles\" 
Dim ProcedureList As New List(Of String) 

Dim sourceDirectoryInfo As New System.IO.DirectoryInfo(AppDataLocation) 

For Each fileSystemInfo As System.IO.FileSystemInfo In sourceDirectoryInfo.GetFileSystemInfos 
    If (fileSystemInfo.Name.Contains("SP_")) Then 
     Dim ProcedureText As String = _ 
      System.IO.File.ReadAllText(AppDataLocation & fileSystemInfo.Name) 
     ProcedureList.Add(ProcedureText) 
    End If 
Next 

如果由于某种原因,你还是需要的结果作为数组后,只需转换列表中的数组:

Dim myArray() As String = ProcedureList.ToArray() 
+0

这正是我所需要的。非常感谢! – 2012-02-24 15:17:19

如果你不想给你的阵列大小或想在运行时改变,你可以使用“Redim Preserve” http://msdn.microsoft.com/en-us/library/w8k3cys2%28v=vs.71%29.aspx