2

编写 F# Windows 窗体应用程序我发现了 F# 的 Event.Filter 函数,我想了解更多有关它的信息。我所做的是转换我现有的代码:

MyControl.MouseMove.Add( fun args ->
    if (args.Button = MouseButton.Left && args.X > 10 && args.Y > 10)
    then // do something

到 :

MyControl.MouseMove
|> Event.filter ( fun args -> 
    (args.Button = MouseButtons.Left && args.X > 10 && args.Y > 10))
|> Event.add ( // do something)

我发现 Event.Filter 解决方案非常优雅,所以我想知道它是否只是一种语法糖,或者是“幕后”工作方式的差异。

4

1 回答 1

2

查看源代码,您可以看到您的两个代码示例几乎完全相同。唯一的额外开销是创建额外Event的 by filter

filter在我看来,由于性能而不使用将是过度优化。

于 2013-02-05T21:11:21.230 回答