【发布时间】:2009-08-20 15:24:11
【问题描述】:
我了解了闭包和 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));
}
首先,有没有更直接的方法可以写出这个表达式?其次,“FindAll”不是要为保存匹配项的新集合分配内存吗?我肯定看到语法更优雅,但我想确保以后在处理更大的集合时不会遇到性能问题。编译器是否在幕后做了一些优化巫术使我的担忧无效?
【问题讨论】: