【发布时间】:2011-12-05 19:35:19
【问题描述】:
好的,假设您在某个类中定义了一个委托。
public delegate void StringDelegate (string s);
另一个类实现了一个方法:
public static void StringWriter (string s) {...}
在我正在阅读“Programming C#”第 4 版的书中,他们使用 new 关键字创建委托,例如:
ClassDelegate.StringDelegate writer;
writer = new ClassDelegate.StringDelegate (DelegateImplementer.StringWriter);
writer("Hello");
不过,我发现也可以这样调用委托方法
ClassDelegate.StringDelegate writer;
writer = DelegateImplementer.StringWriter;
writer ("Hello");
有什么区别?当我可以简单地传递或引用方法委托的签名时,为什么还要实例化并创建一个对象委托。
【问题讨论】:
-
我经常使用前者,因为这是 VS 在
+=之后自动完成的;-) 关于我使用命名委托的唯一一次是在函数调用的参数中,在这种情况下后者是更清洁的选择。