我正在简化/优化我之前编写的一些代码。我创建了一个自定义的循环缓冲区类,以达到其目的,但我希望将其替换为对所有使用代码而言更标准的东西。
要求是(以及我的CircularBuffer
领导所做的):
最好同时具有读写功能,这是我从来没有想过要在循环缓冲区中弄清楚的。
我着眼于MemoryStream
,但是从文档中我无法确定它是否满足#2和#3。
那么,是否有任何流可以支持/可以(修改后)支持我的需求,还是我坚持创建自己的自定义循环缓冲区?
答案 0 :(得分:0)
我认为现成的内存缓冲区不支持#2
和#3
。
也许Queue
可能是环形缓冲区的基础。
这是一个FIFO结构,总是在处添加新内容,并从头开始读取。要使它成为具有特定大小的环形缓冲区,如果Queue.Count()
超出指定值,则可能引发异常。
这可能具有一个优点,那就是您根本不需要最大大小,队列将随着可用数据而增长和收缩。
可以通过LINQ var nThElement = Queue.ElementAt(...);
进行随机访问,尽管如果进行大量操作可能会增加性能。
但是对于如此具体的事情,我个人将使用您已经拥有的自定义实现。