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

时间:2018-12-10 10:02:41

标签: vb.net list bytestring

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

1 个答案:

答案 0 :(得分:0)

通常,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关键字添加额外的元素时,您还可以阅读如何扩大数组。