6

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

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

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

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

4

4 回答 4

19
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);
于 2009-01-29T08:08:33.800 回答
8

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

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

或对于 C# 2.0:

new Action<int>(delegate(int x) { Console.WriteLine(x); })(3);
于 2009-01-29T08:59:08.720 回答
2

查看匿名方法

于 2009-01-29T08:00:44.453 回答
1

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

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

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

于 2009-01-29T08:02:10.380 回答