【发布时间】:2010-11-01 23:02:09
【问题描述】:
我不会是唯一一个厌倦了为需要委托的事物定义和命名委托的人。例如,我想以可能来自其他线程的表单调用 .Refresh(),所以我编写了以下代码:
private void RefreshForm()
{
if (InvokeRequired)
Invoke(new InvokeDelegate(Refresh));
else
Refresh();
}
我什至不确定我是否必须这样做,我只是读了足够多的书,害怕它在以后的某个阶段不起作用。
InvokeDelegate 实际上是在另一个文件中声明的,但我是否真的需要一个专门用于此的整个委托?根本没有任何通用代表吗?
我的意思是,例如,有一个 Pen 类,但也有 Pens。pen-of-choice 所以你不必重新制作整个东西。不一样,但我希望你明白我的意思。
【问题讨论】:
-
C# 中没有“匿名代表”之类的东西。有委托(就像你正在使用的那样)和匿名方法(只能通过委托访问)。
-
我猜由于 C# 规范使用术语“匿名方法”,这将是正确的方法。然而,这个术语被很多人用来表示使用匿名方法作为参数实例化的委托。因此,它们的含义相同,但是某人可能使用一个术语而不是另一个术语的上下文通常取决于是否发生委托分配,或者是否将匿名方法直接传递给另一个方法。我欢迎任何相反的论点。
标签: c# delegates anonymous-methods