相关疑难解决方法(0)

C#委托实例化与仅传递方法参考

我有一个简单的问题:实例化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)

两者都会根据我的经验编译和工作......我错过了什么?

.net c# methods delegates instantiation

10
推荐指数
1
解决办法
2710
查看次数

为什么新的Thread()接受方法名称,即使没有构造函数重载似乎允许这样做?

可能重复:
新的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方法.

.net c#

6
推荐指数
1
解决办法
1149
查看次数

标签 统计

.net ×2

c# ×2

delegates ×1

instantiation ×1

methods ×1