我正在爲我的兄弟構建一個應用程序,該應用程序需要字符串輸入形式的外部來源,GPS繪圖儀,我想要在多行文本框中顯示。如果有人要讓這個應用程序長時間運行,我不希望TextBox.MaxLength被超過或內存分配變得過度。C#字符串數組緩衝區
我想不出一個很好的實現方法。我需要在文本框中顯示最後n行。
編輯:標記的解決方案是正確的。謝謝喬恩。我結束了它的通用。以下是我用過的。
public class ArrayBuffer<T>
{
private readonly int _maxLines;
private int _writePosition;
private readonly T[] _buffer;
public ArrayBuffer(int maxLines = 100)
{
_maxLines = maxLines;
_buffer = new T[_maxLines];
}
public T[] Push(T value)
{
_buffer[_writePosition++] = value;
_writePosition %= _maxLines;
return _buffer.Skip(_writePosition)
.Concat(_buffer.Take(_writePosition))
.Where(line => line != null).ToArray();
}
}
用法:
var myArrayBuffer = new ArrayBuffer<string>(50);
string[] bufferedStringArray = myArrayBuffer.Push("some string");
也許醒酒第一? –
哈哈。騎馬[鮑爾默峯](http://xkcd.com/323/) – TheGwa