如何放大List(of String)(字节)

我有一个变量 Queue ,其中我从流中写入信息 . 变量启动如下:

Public Shared Queue As List(Of String) = New List(Of String)(1024)

读取流的代码是

Public Shared Sub ReadStreamForever(ByVal stream As Stream)
    Dim encoder = New UTF8Encoding()
    Dim buffer = New Byte(2047) {}
    Dim counter as Integer = 0
    While True
        If stream.CanRead Then
            Dim len As Integer = stream.Read(buffer, 0, 2048)
            Counter = Counter + 1
            If len > 0 Then
                Dim text = encoder.GetString(buffer, 0, len)
                SSEApplication.Push(text)

            Else
                Exit While
            End If
        Else
            Exit While
        End If
    End While
End Sub

推送方法只是执行一些字符串操作,并逐行添加到队列变量中

Public Shared Sub Push(ByVal text As String)
    If String.IsNullOrWhiteSpace(text) Then
        Return
    End If

    Dim lines = text.Trim().Split(vbLf)
    SSEApplication.Queue.AddRange(lines)
End Sub

我有不同的大数据集我想要流,但填充后的队列长度总是2691,所以它看起来有点长度 . 我只是不知道我在哪里限制队列变量以及如何放大它 . 谁能在这帮助我?

回答(1)

2 years ago

通常, List 没有固定长度, Add 方法调整 List 的大小,并为另一个元素腾出空间 .

如果你想要固定长度,你可以使用简单的数组: Dim Queue(1024) As string

但是,在尝试添加更多元素时会出现异常,因此您可以在 Push 方法中检查条件:

If lines.Count < 1024 Then
  SSEApplication.Queue.AddRange(lines)
End If

当使用 List 时,该检查还将阻止超过1024个元素,但如果您有固定长度的集合,我建议使用简单数组 .

有用的资源:Arrays in Visual Basic,你还可以阅读,如何放大数组,当你想使用 ReDim 关键字添加额外的元素 .