如何在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);