我一直在浏览一些旧的代码,在那里我遇到了一些自定义的委托,因此使用了这些代码:
private delegate void ListenDelegate(UdpClient listener, bool multicast);
private void ListenOn(UdpClient listener, bool multicast)
{
new ListenDelegate(_ListenLoop).BeginInvoke(listener, multicast, null, null);
}
使用一些新的.NET框架版本,您可以执行以下操作:
private void ListenOn(UdpClient listener, bool multicast)
{
new Action<UdpClient, bool>(_ListenLoop).BeginInvoke(listener, multicast, null, null);
}
这应该是完全一样的。在通用委托似乎用较少的空间做同样的工作时,定义自己的委托有什么意义吗?或者我错过了一些关于泛型的东西,使它们不相同?
答案 0 :(得分:1)
几乎没有 - 基本上没有通用。
答案 1 :(得分:1)
当嵌套了许多泛型并且泛型委托变得非常难以理解时,我倾向于使用它们。或者读者无法轻易推断出参数名称。如果没有参数名称,Action<string, string, string>
会告诉他们想要什么。