我不确定是否有人问过同样的问题。但是我找不到任何与我的疑问相关的消息来源。
委托(delegate)人在实时编程中的需求是什么?需要执行很多步骤才能实现它。
public delegate void SimpleDelegate();
class TestDelegate
{
public static void MyFunc()
{
Console.WriteLine("I was called by delegate ...");
}
public static void Main()
{
// Instantiation
SimpleDelegate simpleDelegate = new SimpleDelegate(MyFunc);
// Invocation
simpleDelegate();
}
}
如果可重用性是使用委托(delegate)的主要原因(因为不需要创建实例),这也可以通过其他方式实现。或者这是使用委托(delegate)的唯一优势?我知道匿名方法比委托(delegate)做得更好。但是除了简化步骤之外,它是否提供了除委托(delegate)之外的任何东西。以及当结构如下所示时我如何重用匿名方法。
List<int> values = new List<int>() { 1, 1, 1, 2, 3 };
List<int> res = values.FindAll(delegate(int element)
{
if (element > 10)
{
throw new ArgumentException("element");
}
if (element == 8)
{
throw new ArgumentException("element");
}
return element > 1;
});
我很困惑。请阐明这一点。
最佳答案
委托(delegate)提供对方法的完全类型化和安全引用。现在有了通用事件处理程序、Action
、Func
和 lambda,我个人不记得上次显式创建委托(delegate)是什么时候了。
它们仍然在引擎盖下的各个地方使用,但就日常编程而言,它们几乎已经成为历史。代理存在于版本 1 中。Lambda 和其他选项出现得晚得多。
关于c# - 委托(delegate)们需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001027/