gpt4 book ai didi

c# - C# 中的闭包和 Lambda

转载 作者:可可西里 更新时间:2023-11-01 08:33:06 26 4
gpt4 key购买 nike

我了解了闭包和 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”不是要为包含匹配项的新集合分配内存吗?我确实看到语法更优雅,但我想确保以后在处理更大的集合时不会遇到性能问题。编译器是否在幕后做了一些优化巫术,使我的担忧无效?

最佳答案

是的,FindAll 将创建一个新列表。您需要“Where”,它将返回一个知道如何遍历现有列表的 IEnumerable 对象:

foreach (string name in names.Where(n => n.StartsWith("C") ) ) 
{
Console.WriteLine(name);
}

但该代码中没有闭包,因为没有要捕获的局部变量。

关于c# - C# 中的闭包和 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1306947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com