簡體   English   中英

VB.net ReDim保存的另一種方法

[英]VB.net Alternative way of ReDim Preserve

我的程序確實可以工作,但是我認為它遇到了性能問題,在循環陣列時,它消耗了我總CPU使用率的40%。 通常我的程序只會消耗少於5%的CPU使用率,我認為ReDim Preserve會導致這種情況,因為我循環了大約100,000行以上的行。 這是我的代碼。

    Dim sArray As String()
    Dim fStream As New System.IO.FileStream("messages.txt", IO.FileMode.Open)
    Dim sReader As New System.IO.StreamReader(fStream)
    Dim Index As Integer = 0
    Do While sReader.Peek >= 0
        ReDim Preserve sArray(Index)
        sArray(Index) = sReader.ReadLine
        Index += 1
    Loop

    fStream.Close()
    sReader.Close()

除了ReDim Preserve之外,是否還有其他方法可以將值放入數組中? 預先感謝,我現在確實陷入了這個問題。

現在這是我使用列表更新的代碼。

    Dim sArray As String()
    Dim sList As New List(Of String)
    Dim fStream As New System.IO.FileStream("messages.txt", IO.FileMode.Open)
    Dim sReader As New System.IO.StreamReader(fStream)
    Dim Index As Integer = 0
    Do While sReader.Peek >= 0
        sList.Add(sReader.ReadLine)
    Loop
    sArray = sList.ToArray

    fStream.Close()
    sReader.Close()

我仍然需要數組的功能,因此我創建了一個數組並將List的內容放入其中。

您應該使用List(Of String) ,它將為將來的元素留出空間,而不是每次都調整大小。

正如SLaks所說的,最好是列出:

Dim sArray As New List(Of String)
Dim fStream As New System.IO.FileStream("messages.txt", IO.FileMode.Open)
Dim sReader As New System.IO.StreamReader(fStream)
Do While sReader.Peek >= 0
    sArray.add(sReader.ReadLine)
Loop

fStream.Close()
sReader.Close()

似乎您正在讀取文件,另一個選擇是使用ReadAllLines方法。

Dim sArray() As String = System.IO.File.ReadAllLines("messages.txt")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM