我有一个简单的问题:实例化C#委托与仅传递函数引用相比有什么好处?我的意思是:
为什么:
Thread t = new Thread(new ThreadStart(SomeObject.SomeMethod));
Run Code Online (Sandbox Code Playgroud)
当你能做到:
Thread t = new Thread(SomeObject.SomeMethod);
Run Code Online (Sandbox Code Playgroud)
两者都会根据我的经验编译和工作......我错过了什么?
可能重复:
新的Thread(void Target())和新的Thread(新的ThreadStart(void Target())之间有什么区别?)
我有一个关于Thread类的小问题.这个类有4个构造函数:
public Thread(ParameterizedThreadStart start);
public Thread(ThreadStart start);
public Thread(ParameterizedThreadStart start, int maxStackSize);
public Thread(ThreadStart start, int maxStackSize);
Run Code Online (Sandbox Code Playgroud)
我使用第二个构造函数来创建一个Thread对象:
Thread thread = new Thread(new ThreadStart(ScanDirectory));
Run Code Online (Sandbox Code Playgroud)
但是,我可以使用一种方法来创建这个对象,而不使用我上面提到的任何构造函数.
Thread thread = new Thread(ScanDirectory);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,ScanDirectory是一个void方法,它不是ThreadStart或ParameterizedThreadStart,但Thread类仍然接受此构造函数.为什么?我认为这是一个.NET功能,但我不知道它是如何实现的.
注意: ScanDirectory是一种void方法.