代表们需要什么?

时间:2016-03-15 01:18:25

标签: c# delegates anonymous-methods

我不确定是否有人问过同样的问题。但我无法找到任何与我怀疑相关的消息来源。

代表在实时编程中的需求是什么?要实现它需要做很多步骤。

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

如果可重用性是使用委托的主要原因(因为不需要创建实例),这也可以通过其他方式实现。或者这是使用代表的唯一好处?我知道匿名方法比委托更好。但除了简化步骤之外,它是否提供除代表之外的任何东西。以及当结构将如下所示时,我如何重用匿名方法。

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

我很困惑。请详细说明。

1 个答案:

答案 0 :(得分:1)

代理提供对方法的完全类型和安全的引用。现在使用通用事件处理程序ActionFunc和lambdas,我个人不记得上次我明确创建委托时。

它们仍然在引擎盖下的所有地方使用,但就日常编程而言,它们几乎是历史。代表们存在于第1版中.Lambdas和其他选项在很晚之后出现了。

相关问题