C# 多行 lambda 表达式

bud*_*udi 4 c# lambda

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

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

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

object.ProgressChanged += (sender, args) => aFunction(args);
Run Code Online (Sandbox Code Playgroud)

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

如果可能的话,我正在寻找一种更优雅的方法来解决这个问题。有小费吗?

Jes*_*ter 5

object.ProgressChanged += (sender, args) => {
    maxPercent = Math.Min(maxPercent, (int)args.ProgressPercentage);
};
Run Code Online (Sandbox Code Playgroud)

正如杰夫指出的那样,您应该{ }用于多行 lambda。

  • 在你的情况下(没有`WriteLine`),可以写一个单行`maxPercent = Math.Min(maxPercent, (int)args.ProgressPercentage);` (2认同)