使用时ToList(),是否需要考虑性能影响?
我正在编写一个查询来从目录中检索文件,这是查询:
string[] imageArray = Directory.GetFiles(directory);
但是,由于我喜欢与之合作List<>,我决定投入......
List<string> imageList = Directory.GetFiles(directory).ToList();
那么,在决定进行这样的转换时是否应该考虑某种性能影响 - 或者仅在处理大量文件时考虑?这是一个微不足道的转换?
运行此代码后:
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()的好经验法则是什么?我最初的想法是要么可以多次迭代的任何引用表达式,要么在潜在迭代不明显的情况下更安全,任何引用的表达式,其结果永远不会改变.