在定义后立即执行lambda表达式?

cir*_*rte 29 c# lambda

有没有办法在定义后立即执行lambda表达式?

换句话说(无效的C#代码):

(() => { Console.WriteLine("Hello World"); }).Invoke();
Run Code Online (Sandbox Code Playgroud)

Tej*_*ejs 40

当然.

new Action(() => { Console.WriteLine("Hello World"); })();
Run Code Online (Sandbox Code Playgroud)

这应该够了吧.


小智 17

另一个"选项",其他两个答案只是略有不同:

((Action)(() => { Console.WriteLine("Hello World"); }))();
Run Code Online (Sandbox Code Playgroud)

原因,直接取自phoog的评论:

...你没有告诉编译器你是否想要一个Action或一个Expression<Action>.如果你的是lambda表达式Action,你就可以调用来调用它,或者使用方法调用的语法()调用它.

它肯定会变得丑陋,我不知道这个形式有用的地方,因为它不能用于没有名字的递归...