代表的主要用途是什么?他们的主要优势是什么? 我们也可以使用简单的方法代替委托,那么为什么我们使用委托??
答案 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);
}
使用关闭lower
和upper
局部变量的lambda。如果没有代表或lambdas,就不可能为这类任务获得如此清晰简洁的代码。
答案 1 :(得分:1)
代理是正确完成的函数指针。
您可以在运行时“进行热插拔”功能。您可以将它们传递给其他函数。