如何在C#中调用匿名函数?

我感兴趣的是,如果可以使用C#编写类似于这个Javascript的代码:

var v = (function() { return "some value"; })() 

我能做的最多的是:

 Func vf = () => { return "some value"; }; var v = vf(); 

但是我想要这样的东西:

 // Gives error CS0149: Method name expected var v = (() => { return "some value"; })(); 

有没有办法调用函数让它匿名?

是的,但C#是静态类型的,因此您需要指定委托类型。

例如,使用构造函数语法:

 var v = new Func(() => { return "some value"; })(); // shorter version var v = new Func(() => "some value")(); 

…或者演员语法,可能会因为括号太多而变得混乱:)

 var v = ((Func) (() => { return "some value"; }))(); // shorter version var v = ((Func)(() => "some value"))(); 

这是你如何利用这样的结构来封闭上下文 – 闭包 –

 Control.Click += new Func((x) => new System.EventHandler(delegate(object sender, EventArgs e) { }))(valueForX);