Beispiel #1
0
        static void Main(string[] args)
        {
            Console.WriteLine(PerformOperation(Calculator.Add, 4, 6));
            Console.WriteLine(PerformOperation(Calculator.Subtract, 4, 6));
            string input = Console.ReadLine();
            int    i     = System.Convert.ToInt32(input);

            Delegate1 d1 = null;

            if (i == 0)
            {
                d1 = Display;
            }
            else
            {
                d1 = Display4;
            }
            d1.Invoke();
            d1();
            //Delegate2 d2 = new Delegate2(Display2);
            Delegate2 d2 = Display2;

            d2("AOA Pakistan...");

            Delegate3 d3 = Display3;
            string    s  = d3("Some text");
        }
Beispiel #2
0
        public static Delegate3 MethodF(Delegate1 delegate1, Delegate2 delegate2)
        {
            #region Cтарий варіант, який необхідно замінити
#if false
            return(delegate { return delegate1.Invoke() + delegate2.Invoke(); });
#endif
            #endregion

            #region Аналог старого варіанту який не підходить, так як в старих версіях це не реалізувало б замикання
#if false
            return(() => delegate1.Invoke() + delegate2.Invoke());
#endif
            #endregion

            #region Варіант з використанням Nested функції (локальної функції)
#if false
            // але в такому випадку втрачається смисл передавати в даний метод вхідні дані,
            // так як реалізація конкатанації рядків відбуваєтсья в методі AnonymousMethod()
            //return AnonymousMethod;

            // локальна функція
            string NestedMethod()
            {
                return(delegate1.Invoke() + delegate2.Invoke());
            }

            // ще простіше простіше скориставшись локальною функцією
            return(NestedMethod);
#endif
            #endregion

            #region Варіант з використанням статичних методів (можна і через звичайні, що практично дублюватиме логіку)
#if false
            // приймаємо два делегата, виконуємо і результат заносимо в поле
            ResBothDel(delegate1, delegate2);
            // зчитуємо дані з поля і передаємо їх іншим методом
            return(ForDel3);
#endif
            #endregion

            #region Варіант з використанням Extention - методів розширення
#if true
            // можна  було б назвати: методика "кидок через плече"
            return(ResDel12(delegate1, delegate2).ExMethodDel12);
#endif
            #endregion
        }
Beispiel #3
0
 static void MinMetode(int a, int b, Delegate1 done)
 {
     // gør noget med a og b
     //done.Invoke();
     if (done != null)
     {
         done.Invoke();
     }
 }
        static void Main(string[] args)
        {
            Delegate1 obj = AddNums1;
            double result = obj.Invoke(10, 20.5f, 50.2);
            Console.WriteLine(result);
            Delegate2 obj2 = AddNums2;
            obj2.Invoke(10, 55.2f,12.5);
           //
            Console.Read();


        }
Beispiel #5
0
        static void Main()
        {
            // Создаем экземпляр делегата delegate1 типа Delegate1 и сообщаем с ним Method1
            Delegate1 delegate1 = new Delegate1(Method1);

            // Создаем экземпляр делегата delegate1 типа Delegate1 и сообщаем с ним Method1
            Delegate2 delegate2 = delegate1.Invoke();

            // Вызываем метод сообщенный с делегатом.
            delegate2.Invoke();

            // Задержка.
            Console.ReadKey();
        }
Beispiel #6
0
        static void Main(string[] args)
        {
            Delegate1 obj1   = AddNums1; //or new DelegatesProj.Delegate1(AddNums1);
            double    result = obj1.Invoke(100, 34.2f, 129.221);

            Console.WriteLine(result);

            Delegate2 obj2 = AddNums2;

            obj2.Invoke(100, 32.2f, 129.221);

            Delegate3 obj3   = CheckLength;
            bool      status = obj3.Invoke("Hello World");

            Console.WriteLine(status);
            Console.ReadLine();
        }
Beispiel #7
0
        public static void Main()
        {
            Delegate1 d1 = new Delegate1(DoubleIt);

            Console.WriteLine(d1.Invoke(5));
            //or simply
            Console.WriteLine(d1(5));

            Delegate2 <int, bool> d2 = new Delegate2 <int, bool>(IsEven);

            Console.WriteLine(d2(7));

            Delegate2 <int, bool> d3 = new Delegate2 <int, bool>(i => i % 2 == 0);

            Console.WriteLine(d3(7));

            Func <int, bool> func = new Func <int, bool>(IsEven);

            Console.WriteLine(func(7));
        }
Beispiel #8
0
 public static Delegate3 MethodF(Delegate1 delegate1, Delegate2 delegate2)
 {
     return delegate { return delegate1.Invoke() + delegate2.Invoke(); };
 }
Beispiel #9
0
 public static Delegate3 MethodF(Delegate1 delegate1, Delegate2 delegate2)
 {
     return(delegate { return delegate1.Invoke() + delegate2.Invoke(); });
 }
Beispiel #10
0
        static void Main(string[] args)
        {
            List <string> lst = new List <string>();

            Test1();

            Delegate1 f1 = new Delegate1(Test1);

            f1.Invoke();
            MinMetode(1, 1, f1);
            Console.WriteLine();
            Test2("a");
            Test3("b");

            Console.WriteLine();

            //Delegate4 f2 = new Delegate4(Test2);
            Delegate4 f2 = Test2;

            f2 += Test3;
            f2 += Console.WriteLine;
            //f2.Invoke("c-+-c");
            f2("c-+-c");
            f2 -= Console.WriteLine;
            Console.WriteLine();
            f2.Invoke("c-+-c");

            Console.WriteLine();

            Maskine m = new Maskine();

            m.LogFunktion  = new Delegate4(LogTilFil);
            m.LogFunktion += Console.WriteLine;
            m.Start();

            Console.WriteLine("------");

            Delegate4 f1a = new Delegate4(Test2);

            f1a("");

            Delegate4 f2a = Test2;

            f2a += Console.WriteLine;
            f2a += Console.WriteLine;
            f2a += Console.WriteLine;
            f2a += Console.WriteLine;
            f2a += Console.WriteLine;
            f2a += Console.WriteLine;
            f2a("*****");
            //foreach (var item in f2a.GetInvocationList())
            //{
            //    item.DynamicInvoke();
            //}

            //Action    void (..)
            //Func      (..) (..)
            //(Predicate)

            Delegate1 a1_1 = Test1;

            a1_1.Invoke();
            a1_1();

            Action a1_2 = Test1;

            a1_2.Invoke();
            a1_2();


            Action <string> a2 = Console.WriteLine;

            a2("***");

            Action <string, int, bool> a3;

            Func <bool>      b1;
            Func <int, bool> b2;
            Func <bool, int, int, double> b3;

            Action <int, bool, List <string> > t;


            //Action<string> ff = Test3;

            // Lambda (anonym)
            Action <string> q = (string x) =>
            {
                Console.WriteLine("*** " + x);
            };

            //Action<int, bool> w = (int a, bool b) => {

            //};

            Action <int, bool> w = (a, b) => {
            };

            Action <string> å = h => {
                Console.WriteLine(h);
            };

            Action <string> ll = h => Console.WriteLine(h);



            Func <int, int, bool> z = (int a, int b) => {
                return(a == b);
            };

            Func <int, int, bool> zz = (a, b) => {
                return(a == b);
            };

            Func <int, int, bool> zzz = (int a, int b) => { return(a == b); };

            int[] rr = { 5, 1, 47, 1, 156, 5 };
            //var res = rr.Where((i) => { return i < 10; });
            // LINQ
            var res = rr.Where(i => i < 10).OrderBy(i => i);



            q("kfjbdfkjhdkfh");

            w(1, true);


            if (System.Diagnostics.Debugger.IsAttached)

            {
                Console.Write("Press any key to continue . . . ");

                Console.ReadKey();
            }
        }