C#多行lambda表达式

时间:2015-07-20 23:27:49

标签: c# lambda

我想在一个(或多个)整数间隔中打印一个百分比值。以下代码将object.ProgressChanged描述为EventHandler<EventArgs>,将maxPercent描述为全局int变量。

object.ProgressChanged += (sender, args) => (
    if (maxPercent < ((int) args.ProgressPercentage)) {
        maxPercent = (int) args.ProgressPercentage;
        Console.WriteLine(maxPercent + "%");
    }
)

我可以通过这样做轻松解决这个问题:

object.ProgressChanged += (sender, args) => aFunction(args);

其中aFunction包含第一段代码中=>运算符之后的所有相同代码。

我正在寻找一种更优雅的方法来解决这个问题,如果可能的话,在一行中。有什么提示吗?

1 个答案:

答案 0 :(得分:1)

object.ProgressChanged += (sender, args) => {
    maxPercent = Math.Min(maxPercent, (int)args.ProgressPercentage);
};

正如杰夫所指出的那样,你应该使用{ }作为多行lambda。