No-op lambda

时间:2009-07-08 13:46:01

标签: c# .net lambda

我的某个类上有一个事件,我想附加一个处理程序。但是,我不需要处理程序来做任何事情,因为我只是测试附加或不附加处理程序的类的行为。

事件签名如下:

public event EventHandler<EventArgs> Foo;

所以我想做点什么:

myClass.Foo += ();

然而,这不是有效的lambda表达式。表达这一点最简洁的方式是什么?

6 个答案:

答案 0 :(得分:28)

myClass.Foo += (s,e) => {};

myClass.Foo += delegate {};

答案 1 :(得分:9)

(x,y) => {} //oops forgot the params

行? :)

delegate {}

答案 2 :(得分:6)

试试这个:

myClass.Foo += delegate {};

答案 3 :(得分:5)

不是在事后附加委托,更常见的方法是立即分配:

public event EventHandler<EventArgs> Foo = delegate {};

我更喜欢在lambda表达式上使用匿名方法语法,因为它可以处理各种不同的签名(不可否认,那些签名不是out或返回值)。

答案 4 :(得分:3)

试试这个:

myClass.Foo += (s,e) => {};

答案 5 :(得分:1)

通过像这样的lambda附加事件:

myClass.Foo += (o, e) => {
    //o is the sender and e is the EventArgs
};