c#多行lambda表达式

本文关键字:表达式 lambda 多行 | 更新日期: 2023-09-27 18:03:54

我想打印一个(或多个)整数间隔的百分比值。下面的代码将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包含第一段代码中=>运算符之后的所有相同代码。

我正在寻找一种更优雅的方法来处理这个问题,如果可能的话,用一行。任何建议吗?

c#多行lambda表达式

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

正如Jeff指出的那样,您应该使用{ }作为多行lambda