【发布时间】:2010-02-25 02:17:52
【问题描述】:
我发现自己经常执行以下操作,我不知道是否有任何副作用,但请考虑在 WinForms C# 应用程序中执行以下操作。 (请原谅我在输入代码时出现的任何错误,而不是复制粘贴任何内容)
int a = 1;
int b = 2;
int c = 3;
this.Invoke((MethodInvoker)delegate()
{
int lol = a + b + c;
});
这有什么问题吗?还是我应该走很长的路>_
int a = 1;
int b = 2;
int c = 3;
TrippleIntDelegate ffs = new TrippleIntDelegate(delegate(int a_, int b_, int c_)
{
int lol = a_ + b_ + c_;
});
this.Invoke(ffs);
不同之处在于参数是传入而不是使用局部变量,这是一些非常甜蜜的 .net 魔法。我想我曾经看过反射器,它创建了一个全新的类来保存这些变量。
那么重要吗?我可以偷懒吗?
编辑:注意,显然不要关心返回值。否则我将不得不使用我自己的类型化委托,尽管我仍然可以使用局部变量而不传递它!
【问题讨论】:
标签: c# parameters delegates lazy-evaluation