在这种情况下,AddRange()会比ToList()更快吗?

skw*_*ear 0 c# linq list

我有一个逗号分隔的字符串ctext,我想分割并放入一个List<string>.

会使用LINQ,

List<string> f = ctext.Split(',').ToList();
Run Code Online (Sandbox Code Playgroud)

比不使用LINQ更慢?

List<string> f;
f.AddRange(ctext.Split(','));
Run Code Online (Sandbox Code Playgroud)

似乎LINQ实际上会在某个地方复制某些东西,这会使它变得更慢,而AddRange()只是检查列表的大小一次,展开它,并将其转储.

或者有更快的方式吗?(就像使用for循环,但我怀疑它.)

Jon*_*eet 7

幸运的是,我们可以轻松地看看ToList它现在是什么样的开源.(点击链接获取最新资讯......)

我以前没有见过IListProvider<T>,但我怀疑阵列是否实现了它,这意味着我们基本上已经实现了new List<TSource>(source).查看List<T>源代码显示构造函数和AddRange基本上最终都使用CopyTo.

换句话说,除了几个间接层次之外,我希望它们都能做同样的事情.