C#多行Lambda表达式

7

我想在一个或多个整数间隔内打印百分比值。下面的代码将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 包含了第一段代码中 => 操作符之后的所有代码。

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


如果你坚持使用Console.WriteLine,那么你的选择就很有限了。 - David L
"这个问题"?什么问题? - Dave Cousineau
我只是想知道是否有一种方法可以用一行代码来实现这个。我猜这不是真正的“问题”,更多的只是出于好奇。 - budi
@usr 是的,那就是我想要的,我意识到在我的原始帖子中完全没有表达清楚...看起来Jeff Mercado已经发布了我所寻找的答案。 - budi
这个重复问题是被关闭的,顺便说一下,它是完全不同的问题。 - Rob
显示剩余4条评论
1个回答

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

正如Jeff指出的那样,对于多行lambda表达式应该使用{ }

2
在您的情况下(不使用 WriteLine),可以编写一行代码 maxPercent = Math.Min(maxPercent, (int)args.ProgressPercentage); - AlexD
哦,好棒啊!我没想到那个!我会更新我的答案。 - Jesse Carter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接