好的,假设你在某个类中定义了一个委托.
public delegate void StringDelegate (string s);
Run Code Online (Sandbox Code Playgroud)
另一个类实现了一个方法:
public static void StringWriter (string s) {...}
Run Code Online (Sandbox Code Playgroud)
在我正在阅读"Programming C#"第4版的书中,他们使用new关键字创建委托,例如:
ClassDelegate.StringDelegate writer;
writer = new ClassDelegate.StringDelegate (DelegateImplementer.StringWriter);
writer("Hello");
Run Code Online (Sandbox Code Playgroud)
但是,我看到也可以通过这种方式调用委托方法
ClassDelegate.StringDelegate writer;
writer = DelegateImplementer.StringWriter;
writer ("Hello");
Run Code Online (Sandbox Code Playgroud)
有什么不同?当我只是简单地传递或引用方法委托的签名时,为什么我想要实例化并创建一个对象委托.
很抱歉,如果之前已经询问过这个问题,但我想简单回答以下两种用法之间的差异.VS似乎接受它们作为有效代码.
private static void doSomeWork()
{
//do some work
}
public someClass()
{
//Thread thread = new Thread(doSomeWork);
//or
//Thread thread = new Thread(new ThreadStart(doSomeWork));
}
Run Code Online (Sandbox Code Playgroud)