static void Main() { Functional functional = new Functional(MethodF); Delegate3 delegate3 = functional.Invoke(new Delegate1(Method1), new Delegate2(Method2)); Console.WriteLine(delegate3.Invoke()); // Delay. Console.ReadKey(); }
static void Main(string[] args) { Delegate3 dl3 = new Delegate3(); //instance for delegate Del d3 = dl3.MulitplyNumbers; Console.WriteLine("Invoking the delegate: "); for (int i = 1; i <= 10; i++) { d3(i, 2); } Console.Read(); }
static void Main() { Functional functional = new Functional(MethodF); /// создаем чемодан (экземпляр делегата) Functional и сообщаем с ним метод, возвращаемым значением /// которого является экземпляр типа делегата Delegate3, который в свою очередь представляет собой /// "указатель" на метод без входных параметров и вовзращающий строковое значение ; Delegate3 delegate3 = functional.Invoke(new Delegate1(Method1), new Delegate2(Method2)); /// присваиваем переменной delegate3 возвращаемое значение /// метода MethodF, совмещенного с экземпляром functional /// класса-делегата Delegate3. /// При обращении к делегату Functional передаем 2 входных /// параметра, каждый из которых является экземпляром других /// классов-делегатов. /// В итоге переменная delegate3 содержит ссылку ("указатель") на анонимный метод, который не принимает входных аргументов и возвращает строку; /// Как видно, этот анонимный метод является возвращаемым значением метода MethodF, который был совмещен с экземпляром делегата Delegate3, functional; Console.WriteLine(delegate3.Invoke()); // Delay. Console.ReadKey(); }