何时定义自己的代理而不是使用泛型有用?

时间:2010-05-20 12:08:17

标签: .net delegates

我一直在浏览一些旧的代码,在那里我遇到了一些自定义的委托,因此使用了这些代码:

    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);
    }

这应该是完全一样的。在通用委托似乎用较少的空间做同样的工作时,定义自己的委托有什么意义吗?或者我错过了一些关于泛型的东西,使它们不相同?

2 个答案:

答案 0 :(得分:1)

几乎没有 - 基本上没有通用。

答案 1 :(得分:1)

当嵌套了许多泛型并且泛型委托变得非常难以理解时,我倾向于使用它们。或者读者无法轻易推断出参数名称。如果没有参数名称,Action<string, string, string>会告诉他们想要什么。