C# 为什么对象列表(包含字符串属性)比相应的文本文件大8倍(字节)?

C# 为什么对象列表(包含字符串属性)比相应的文本文件大8倍(字节)?,c#,parsing,memory,streamreader,C#,Parsing,Memory,Streamreader,我有一个文本文件(或csv),如下所示: this is line 1 and I consist of my words this is line 2 and I consist of my words ... this is line 500k (not exaggerating) 现在假设我们有50万行文本。 文件大小约为69.337KB 当我逐行(使用BufferedStream-StreamReader.ReadLine())读取它并将其转换为相应对象的列表(每个单词都有属性)时,该

我有一个文本文件(或csv),如下所示:

this is line 1 and I consist of my words
this is line 2 and I consist of my words
...
this is line 500k (not exaggerating)
现在假设我们有50万行文本。 文件大小约为69.337KB

当我逐行(使用BufferedStream-StreamReader.ReadLine())读取它并将其转换为相应对象的列表(每个单词都有属性)时,该列表的大小会增加到大约520MB(内存中)

为什么呢

代码:

注意:文本文件就是一个例子,因为它完全不相关,这些单词到底是什么


我只是想更好地了解正在发生的事情。

如果用
File.ReadLines(path).ToList()
加载
列表
,它有多大。你到底是如何测量它的?你说这是一个“对象列表”,但你没有给我们任何示例代码来展示这个对象的样子。如果你能提供一个例子,我们可以指出所有开销的来源。(将会有几个地方,所以没有具体的例子就不值得尝试列出它们。)可能重复的是,在你写的时候它还在编辑中(一定是闪电般的快),这取决于你要解决什么样的问题。从这一小块代码/描述中,没有人可以决定您应该如何处理这些数据。如果您可以分块处理数据,那就这样做吧——如果不能,您可能需要一个本地数据库,在处理过程中可以持久化数据/状态
while (reader.ReadDataRow(row, false))
            {
              if (reader.CurrentObj!= null)
              {
                _myDataset.Add(reader.CurrentObj);
              }
            }