一尘不染

如何最好地将文件读入列表

c#

我使用列表来限制文件大小,因为目标限制在磁盘和内存中。这就是我现在正在做的,但是有没有更有效的方法?

readonly List<string> LogList = new List<string>();
...
var logFile = File.ReadAllLines(LOG_PATH);
foreach (var s in logFile) LogList.Add(s);

阅读 229

收藏
2020-05-19

共1个答案

一尘不染

var logFile = File.ReadAllLines(LOG_PATH);
var logList = new List<string>(logFile);

由于logFile是数组,因此可以将其传递给List<T>构造函数。在阵列上迭代或使用其他IO类时,这消除了不必要的开销。

实际的构造函数实现

public List(IEnumerable<T> collection)
{
        ...
        ICollection<T> c = collection as ICollection<T>;
        if( c != null) {
            int count = c.Count;
            if (count == 0)
            {
                _items = _emptyArray;
            }
            else {
                _items = new T[count];
                c.CopyTo(_items, 0);
                _size = count;
            }
        }   
        ...
}
2020-05-19