Я получаю основные принципы замыканий и лямбда-выражений, но я пытаюсь сосредоточиться на том, что происходит за кулисами, и когда это / нецелесообразно использовать в моем коде. Рассмотрим следующий пример, который принимает коллекцию имен и возвращает любые имена, начинающиеся с буквы 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» выделить память для новой коллекции, которая содержит соответствующие элементы? Я определенно вижу, что синтаксис более элегантный, но я хочу убедиться, что не буду вдаваться в проблемы с производительностью позже при работе с большими коллекциями. Компилятор делает некоторую оптимизацию вуду за кулисами, которая делает мои опасения недействительными?