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();
        }
Beispiel #2
0
        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();
        }