例如:
Sorter.SortBy ( array, ( a, b ) =>
{
return a > b;
} );
格式化它们以获得最大可读性的最佳方法是什么?
还要考虑一个参数lambda版本,以及可能常用的其他情况。
指导原则是什么?
答案 0 :(得分:2)
Sorter.Filter(array, a => a.IsOK);
Sorter.SortBy(array, (a, b) => a > b);
Collection.Apply(array, (a) => a * a, // i like lining things up
(x, y, z) => WhipIt(x, y) / z,
(a, b) => a + b);
Evaluator.Confuse(array, (a, func) => // this is a big one, engage curly braces
{
if(a.Flag) return 0;
else
{
var x = func(a);
if(x < 0) return -1;
else return x * 2;
}
});
答案 1 :(得分:1)
为什么示例中的花括号?你不觉得这更具可读性吗? :
Sorter.SortBy ( array, (a,b) => (a > b) );
编辑 (回应评论):
如果您的lambda需要临时变量或其他无法在单个表达式中表达的内容,则应使用大括号和显式返回语句。在所有(大多数)其他情况下,省略它们更清晰,因为它看起来更直观(无论如何对我来说)。
答案 2 :(得分:1)
Sorter.SortBy(array, (a, b) => a > b);
答案 3 :(得分:1)
在处理复杂的lambda(在我看来,不仅仅是一行)时,我实际上更倾向于回归到老式的2.0匿名方法:
DoSomething的(
委托(int a,int b)
{
int c = a + b;
int d = / * blah blah * /
返回d;
});
当lambda包含多于一行时,我喜欢看到参数的类型而不仅仅是(a,b)。但那只是我。
答案 4 :(得分:0)
您将无法确定哪种格式化策略最佳,因为这通常非常主观。
你可以看看ReSharper是如何做到这一点的,因为它允许你稍微自定义格式。