gpt4 book ai didi

c# - LINQ 扩展方法 : use Lambda expressions or methods?

转载 作者:行者123 更新时间:2023-11-30 22:36:54 24 4
gpt4 key购买 nike

使用 Enumerable.Select 等 LINQ 扩展方法时,是使用 Lambda 表达式更好还是使用常规方法更好?

我问的是关于(内存)优化*和可读性**。

示例代码:

private void Main() {
var array = new int[1];
var result1 = array.Select(x => x.ToString()); // Lambda
var result2 = array.Select(LinqHelper); // method
}

private string LinqHelper(int x) {
return x.ToString();
}


* 我主要考虑闭包创建其中包含未使用的实例化变量的范围,仅仅是因为创建 Lambda 时这些变量在范围内 。编辑 - 这是愚蠢的想法,因为变量只有在 Lambda 表达式中被引用时才会被闭包捕获。
**这两个选项对我来说都不错。

最佳答案

从优化的角度来看,应该没有区别。

从可读性的角度来看,我会考虑你是否需要在几个地方使用相同的逻辑。如果是,则使用方法并使用方法组转换。这样您就不会重复自己,因此如果您的要求发生变化,您不必更改几位代码。

如果您只在一个地方使用逻辑并且它很短,lambda 表达式会以一种通常更易于阅读 IMO 的方式“内联”捕获逻辑。

我通常避免使用 lambda 表达式,但与 TPL 一起使用可能是个异常(exception),例如

Parallel.ForEach(..., x => {
// I'm quite happy to have a long-ish lambda here - it's like a foreach
// loop body, basically.
});

关于c# - LINQ 扩展方法 : use Lambda expressions or methods?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6772992/

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