No-op lambda

Mat*_*lls 22 .net c# lambda

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

事件签名如下:

public event EventHandler<EventArgs> Foo;
Run Code Online (Sandbox Code Playgroud)

所以我想做一些事情:

myClass.Foo += ();
Run Code Online (Sandbox Code Playgroud)

但是,这不是有效的lambda表达式.表达这种最简洁的方式是什么?

Mat*_*lls 30

myClass.Foo += (s,e) => {};
Run Code Online (Sandbox Code Playgroud)

要么

myClass.Foo += delegate {};
Run Code Online (Sandbox Code Playgroud)


lep*_*pie 9

(x,y) => {} //oops forgot the params
Run Code Online (Sandbox Code Playgroud)

好?:)

要么

delegate {}
Run Code Online (Sandbox Code Playgroud)


And*_*are 6

试试这个:

myClass.Foo += delegate {};
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 5

而不是之后附加委托,更常见的方法是立即分配它:

public event EventHandler<EventArgs> Foo = delegate {};
Run Code Online (Sandbox Code Playgroud)

我更喜欢在lambda表达式上使用匿名方法语法,因为它可以使用各种不同的签名(当然不是那些带out参数或返回值的签名).