linq - 匿名方法/Lambda 的(编码标准)

标签 linq lambda standards

在 Jeffrey Richter 的“CLR via C#”(.net 2.0 版页面,353)中,他说作为一种自律,他从不让匿名函数的长度超过 3 行代码。他主要引用可读性/可理解性作为他的理由。这很适合我,因为我已经有了使用不超过 5 行匿名方法的自律性。

但是,“编码标准”建议如何与 lambda 相叠加?从表面上看,我会以同样的方式对待它们 - 保持 lambda 一样短。但其他人对此有何看法?特别是,当 lambda 被用于(可以说)它们最亮的地方时 - 在 LINQ 语句中使用时 - 是否有真正的理由放弃该自律/编码标准?

最佳答案

请记住,自 2.0 以来,情况发生了很大变化。例如,考虑 .NET 4 的并行扩展,它大量使用委托(delegate)。你可能有:

Parallel.For(0, 100, i => 
{
    // Potentially significant amounts of code
});

对我来说,这是一个 lambda 表达式还是一个匿名方法并不重要——它的使用方式与 .NET 2.0 中通常使用的委托(delegate)不同。

在普通的 LINQ 中,我通常不会发现自己使用大型 lambda 表达式——当然不是就语句数量而言。有时,一个特定的单个表达式的行数会很长,因为它转换了许多属性;另一种选择是拥有巨大的线条!

事实上,LINQ 倾向于支持单表达式 lambda 表达式(甚至没有大括号)。看到 LINQ 有一个包含 5 个语句的 lambda 表达式的良好使用,我会感到相当惊讶。

关于linq - 匿名方法/Lambda 的(编码标准),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2627662/

相关文章:

c# - Linq GroupBy 将每个空值作为一个组

c# - 使用 EF Core 继承时如何避免重复属性投影?

lambda - 如何使用 lambda 表达式捕获静态或非静态属性?

c++ - 如何确定编译器使用的 C++ 标准的版本?

c# - 这是 LINQ 查询 "correct"吗?

c# - 如何使用 LINQ 表达式从模拟存储库返回新对象?

c# - 对于不处理所有元素,这是如何并行的?

python - 如何在单个列上使用 groupby 并在 Pandas 中对多个列进行比较?

html - 嵌套标签行为标准

c++ - C++标准中未定义行为段落中的[Note]是什么意思?