如何放大(字符串的)列表(字节)



我有一个变量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

其中push方法只进行一些字符串操作,并将一行接一行添加到队列变量中

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,所以看起来长度有点有限。我只是不知道在哪里限制队列变量以及如何放大它。有人能帮我吗?

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

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

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

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

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

有用的资源:在Visual Basic中的数组,当您想使用ReDim关键字添加额外的元素时,您还可以在那里阅读如何放大数组。

最新更新