代表的主要用途和优势?

时间:2012-09-14 03:36:27

标签: .net delegates

代表的主要用途是什么?他们的主要优势是什么? 我们也可以使用简单的方法代替委托,那么为什么我们使用委托??

2 个答案:

答案 0 :(得分:3)

代表有很多很好的用途,但与简单方法相比,一个重要的好处是close对环境的能力。因此,如果没有委托或lambdas或其他类似的功能,就不可能编写像

这样的代码
public delegate int PartiallyApplied(int b);

public static PartiallyApplied CurriedAdd(int a)
{
    return delegate (int b)
    {
        return a + b;
    };
}

您可能想知道为什么关闭环境很有用。一个重要的用例是LINQ。只保留序列元素在一定范围内的简单方法是

public IEnumerable<int> WithinRange(this IEnumerable<int> seq, int lower, int upper)
{
    return select n from seq where n >= lower && n < upper;
}

(因为这是演示代码,它缺少错误检查和生产代码的其他功能)

此代码涉及

public IEnumerable<int> WithinRange(this IEnumerable<int> seq, int lower, int upper)
{
    return seq.Where(n => n >= lower && n < upper);
}

使用关闭lowerupper局部变量的lambda。如果没有代表或lambdas,就不可能为这类任务获得如此清晰简洁的代码。

答案 1 :(得分:1)

代理是正确完成的函数指针。

您可以在运行时“进行热插拔”功能。您可以将它们传递给其他函数。