我知道在 C# 中,最常见的集合都实现了 IEnumerable 接口:List、T[] 和 Dictionary。
然而,当你运行像这样的 LINQ 查询时:
myCol.Where(myBoolMethod);
你会得到一个未知类型的数据,该数据实现了 IEnumerable 接口。
因此,我想知道这些数据在被转换成更有用的格式(如 .ToList()、.ToArray() 等)之前,其实际存储方式是什么?
它是否仍保持在源类型中?它是否被存储在伪数组中?还是一种以上两种方式的组合?
此外,无论涉及哪些数据类型,将数据转换为 IEnumerable 的某一种类型是否总是比转换为另一种类型更快,即 myCol.Where(myBoolMethod).ToArray() 比 myCol.Where(myBoolMethod).ToList() 总是更快?
然而,当你运行像这样的 LINQ 查询时:
myCol.Where(myBoolMethod);
你会得到一个未知类型的数据,该数据实现了 IEnumerable 接口。
因此,我想知道这些数据在被转换成更有用的格式(如 .ToList()、.ToArray() 等)之前,其实际存储方式是什么?
它是否仍保持在源类型中?它是否被存储在伪数组中?还是一种以上两种方式的组合?
此外,无论涉及哪些数据类型,将数据转换为 IEnumerable 的某一种类型是否总是比转换为另一种类型更快,即 myCol.Where(myBoolMethod).ToArray() 比 myCol.Where(myBoolMethod).ToList() 总是更快?