【发布时间】:2017-04-27 04:20:50
【问题描述】:
代表WaitCallback 和Action<Object> 共享相同的签名。尽管如此,正如下面的代码所证明的,它们不能被视为同一类型。
static void Main(string[] args)
{
WaitCallback wcb = (o) => Console.WriteLine("Hello from wcb delegate");
ThreadPool.QueueUserWorkItem(wcb);//works
Action<object> action = (o) => Console.WriteLine("Hello from action<object> delegate");
ThreadPool.QueueUserWorkItem(action);//does not compile: Cannot convert from Action<object> to WaitCallback
Console.ReadLine();
}
我对这个观察有两个问题:
-
为什么签名相同但名称不同的委托不被视为同一类型?语言设计团队是否会做出不同的选择,或者会导致不一致或其他问题?
-
当
Action代表在 .NET 框架 2.0 中引入时,WaitCallback已经存在。我想知道如果不是这种情况,是否有理由引入额外的委托类型WaitCallback而不是使用Action?
【问题讨论】:
标签: c# .net delegates threadpool