2009-01-29 71 views
5

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

澄清: 我正在寻找一些方法,可以让我创建一个匿名函数,然后直接调用它。 (我知道上面的代码不能编译,但我想要的东西接近)。

+0

请解释一下你为什么要这么做。 – 2009-01-29 08:11:19

+1

我不想通过引入另一个声明来混乱我的类标题。 – 2009-01-29 08:13:58

+0

为什么不使用普通的旧内联代码?另外我也看不出私人方法会成为一个大问题。 – 2009-01-29 08:16:04

回答

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

要创建一个匿名方法使用委托:

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

编辑:这个问题是修订后pablitos答案更准确。

+0

对问题进行修改/更改后,回答不正确的问题在我看来不是投票应该如何工作。 – 2009-01-29 09:30:22

8

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

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

或C#2.0:

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