我有一个简单的问题:实例化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)
两者都会根据我的经验编译和工作......我错过了什么?
可能重复:
为什么使用"new DelegateType(Delegate)"?
新的Thread(void Target())和新的Thread(新的ThreadStart(void Target()))有什么区别?
所以我经历了一些委托,并以某种方式获得了整个想法.现在,我看到处都像这样:
public delegate void Deleg();
Deleg deleg = new Deleg(FunctionName);
deleg();
Run Code Online (Sandbox Code Playgroud)
我认为这会创建一个委托对象,其函数指向作为参数传递给构造函数.
现在,我也可以这样做:
public delegate void Deleg();
public Deleg deleg;
deleg = FunctionName;
deleg();
Run Code Online (Sandbox Code Playgroud)
这个似乎只创建一个引用,并传递函数的地址.这工作原理相同,并具有所有委托功能.
但是现在,无论事实上我在第二个例子中还有一行,我实际上是否会因为第一个在教程中更受欢迎而失去或获得一些东西?