static void Main() { Delegate1 delegate1 = new Delegate1(Method1); Delegate2 delegate2 = delegate1(); /// переменной delegate2 присваем возвращаемое значение метода, сообщенного с делегатом delegate1; delegate2(); // Delay. Console.ReadKey(); }
static void Main() { Delegate1 delegate1 = new Delegate1(Method1); Delegate2 delegate2 = delegate1(); delegate2(); // Delay. Console.ReadKey(); }
public static Delegate3 MethodF(Delegate1 delegate1, Delegate2 delegate2) /// 2 "чемодана" передаем в качестве аргументов метода; { /// на выходе получаем третий "чемодан". return(delegate { return delegate1.Invoke() + delegate2.Invoke(); }); /// 01:34:20 - здесь использован анонимный метод без входный параметров. /// А мы анонимные методы ассоциируем с делегатами. /// Говорим "анонимный метод", поразумеваем неявное создание /// экземпляра делегата, ПРЕДПОЛОЖЕНИЕ ДЕЛЕГАТА в случае использования /// анонимных методов (см. пример: 005_Delegates (anonymous methods)) /// Здесь происходит конкатенация возвращаемых значений методов, сообщенных с делегатами, с делегатом 1 (delegate1) и с делегатом 2 (delegate2); /// 01:37:15 - На 16-й строке мы возвращаем делегат с сообщенным лямбда-методом, который возвращает конкатенацию возвращаемых значений методов, /// сообщенных с делегатами, которые поступают в качестве аргументов; }
public static Delegate3 MethodF(Delegate1 delegate1, Delegate2 delegate2) { return(delegate { return delegate1.Invoke() + delegate2.Invoke(); }); }