我得到了闭包和lambda表达式的基本原理,但我试图将我的思想包围在幕后发生的事情以及何时在我的代码中使用它们是不切实际的.考虑以下示例,该示例采用名称集合并返回以字母C开头的任何名称...
static void Main(string[] args)
{
List<string> names = new List<string>();
names.AddRange(new string[]
{
"Alan", "Bob", "Chris", "Dave", "Edgar", "Frank"
});
names.FindAll(x => x.StartsWith("C")).ForEach(
i => Console.WriteLine(i));
}
Run Code Online (Sandbox Code Playgroud)
首先,有没有更直接的方法可以写出这个表达式?其次,是不是"FindAll"会为包含匹配项的新集合分配内存?我确实看到语法更优雅,但我想确保在处理更大的集合时,我不会在以后遇到性能问题.编译器是否在幕后做了一些优化巫术,使我的问题无效?