相关疑难解决方法(0)

调用ToList()会对性能产生影响吗?

使用时ToList(),是否需要考虑性能影响?

我正在编写一个查询来从目录中检索文件,这是查询:

string[] imageArray = Directory.GetFiles(directory);

但是,由于我喜欢与之合作List<>,我决定投入......

List<string> imageList = Directory.GetFiles(directory).ToList();

那么,在决定进行这样的转换时是否应该考虑某种性能影响 - 或者仅在处理大量文件时考虑?这是一个微不足道的转换?

c# arrays performance list

131
推荐指数
6
解决办法
5万
查看次数

何时使用LINQ的.ToList()或.ToArray()

运行此代码后:

var input = new List<T>( ... );
var result = input.Select( t => new U(t) );

U first1 = null;
foreach ( U u1 in result )
    if ( first1 == null )
        first1 = u1;

U first2 = null;
foreach ( U u2 in result )
    if ( first2 == null )
        first2 = u2;
Run Code Online (Sandbox Code Playgroud)

然后'first1 == first2'评估为false,即使两个U都包含相同的T.我还没有测试它,但我认为可以通过链接.ToList()或.ToArray()来评估为true进入Select()调用.

在比这个简单的插图复杂得多的实际代码中,用于决定是否应该附加.ToList()或.ToArray()的好经验法则是什么?我最初的想法是要么可以多次迭代的任何引用表达式,要么在潜在迭代不明显的情况下更安全,任何引用的表达式,其结果永远不会改变.

c# linq deferred-execution .net-4.5

13
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×2

.net-4.5 ×1

arrays ×1

deferred-execution ×1

linq ×1

list ×1

performance ×1