创建一个函数并在一行C#代码中调用它

时间:2009-01-29 07:58:17

标签: c# delegates c#-2.0

我可以在一行代码中动态创建一个函数并调用它(将值传递给它)吗?

澄清: 我正在寻找一些方法,可以让我创建一个匿名函数,然后直接调用它。排序:

delegate(string aa){ MessageBox.show(aa); }("Hello World!");

或类似的东西(我知道上面的代码没有编译,但我想要一些接近的东西)。

4 个答案:

答案 0 :(得分:17)

new Action<int>(x => Console.WriteLine(x))(3);

它不是那么可读,但回答你的问题,你绝对可以。

编辑:刚刚注意到你把它标记为c#2.0,上面的答案是3.5,而2.0则是

new Action<int>(delegate(int x) { Console.WriteLine(x); })(3);

答案 1 :(得分:8)

实际上不需要.Invoke;你可以写:

new Action<int>(x => Console.WriteLine(x))(3);

或C#2.0:

new Action<int>(delegate(int x) { Console.WriteLine(x); })(3);

答案 2 :(得分:2)

答案 3 :(得分:1)

要创建匿名方法,请使用委托:

delegate(...your arguments...) { ...your code... };

编辑:问题修改后,pablitos答案更准确。