Beispiel #1
0
        static void Main(string[] args)
        {
            MyDelegate d = new MyDelegate((x) => Console.WriteLine(x));

            d("Hello World!");

            var d2 = new MyDelegate2((x) => x + 0.1);

            Console.WriteLine(d2(1));

            var d3 = new MyDelegate3(calculate_square);

            Console.WriteLine(d3.Invoke(3));

            var         d4 = new MyDelegate4(Method1);
            var         d5 = new MyDelegate4(Method2);
            MyDelegate4 d6 = d4 + d5;

            d6.Invoke();

            Func <int, int> get_square = calculate_square;

            Console.WriteLine(get_square(5));

            Action myDelegateMethod1 = Method1;

            myDelegateMethod1.Invoke();

            Action myDelegateDemo = () =>
            {
                Console.WriteLine("hi");
            };

            myDelegateDemo.Invoke();

            List <int> myIntList = new List <int> {
                1, 3, 5, 99, 100, 200, 500, 999
            };
            var myBigNubmers = myIntList.Where(IsBigNumber);

            Console.WriteLine(String.Join(",", myBigNubmers.Select(x => x.ToString())));

            List <int> excludeList = Exclude(myIntList, IsBigNumber);

            Console.WriteLine(String.Join(",", excludeList.Select(x => x.ToString())));

            IEnumerable <Person> people = new List <Person>()
            {
                new Person("fang", "chen", new DateTime(1982, 7, 6)),
                new Person("fang2", "chen2", new DateTime(1982, 7, 5)),
                new Person("fang3", "chen3", new DateTime(1982, 7, 4))
            };
            var newOrderedPeople = people.OrderBy(GetSortFunction(SortOrder.BirthDate));

            Console.WriteLine(String.Join("; ", newOrderedPeople.Select(p => p.ToString())));
        }
Beispiel #2
0
        public void Main()
        {
            MyDelegate4 dele;

            dele  = new MyDelegate4(func0);
            dele += func1;
            dele += func2;

            dele();
            Console.WriteLine();

            dele -= func0;
            dele -= func2;

            dele();
            Console.WriteLine();
        }
Beispiel #3
0
 public Delegates()
 {
     this.myDelegate = this.MyDelegateInstance;
     //Anonymous function (method)
     this.myDelegate = delegate(string param1) { };
     //Lambda expressions
     this.myDelegate = (string param1) => Console.WriteLine();
     MyDelegate2 myDelegate2  = () => 1;
     MyDelegate2 myDelegate21 = () =>
     {
         return(1);
     };
     Func1 <int, Delegates <string>, string> a = (age, delegatesInstance) => delegatesInstance(1);
     string result = a(1, (myInt) => "");
     Func1 <int, int, string> b;
     //MyDelegate3
     MyDelegate4 myd4 =
 }
Beispiel #4
0
        /*
         * 문 형식의 람다식
         * 람다식 내에서 메소드처럼 다양한 처리도 가능하다
         * 그냥 메소드처럼 중괄호 내에 작성하면 된다
         *
         * delegate void MyDelegate(int a, int b);
         *
         * MyDelegate A = (a, b) =>
         * {
         *     if(a > b)
         *          Console.WriteLine("{0}가 크다", a);
         *     else if(a < b)
         *          Console.WriteLine("{0}가 크다", b);
         *     else
         *          Console.WriteLine("{0}, {1}는 같다", a,b);
         * };
         */
        public void Expression()
        {
            MyDelegate4 Compare = (a, b) =>
            {
                if (a > b)
                {
                    Console.WriteLine("{0}보다 {1}가 크다", b, a);
                }
                else if (a < b)
                {
                    Console.WriteLine("{0}보다 {1}가 크다", a, b);
                }
                else
                {
                    Console.WriteLine("{0}, {1}는 같다", a, b);
                }
            };

            Compare(11, 22);
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            MyDelegate del = SayHello;

            del();
            Test(del);

            MyDelegate2 del2 = Test2;

            del2("Saeed");

            MyDelegate3 del3 = Test3;

            del3(20);

            MyDelegate4 del4   = Test4;
            int         result = del4(20, 4);

            Console.WriteLine(result);
        }
Beispiel #6
0
        /// //////////////////////////////////////////////////////////////////////



        static void Main(string[] args)
        {
            MyDelegate myDelegate = new MyDelegate(MyStaticClass.Method); //равносильно строке 28
            MyDelegate m          = MyStaticClass.Method;                 //равносильно строке 27

            myDelegate.Invoke();                                          //равносильно строке 32
            myDelegate();                                                 //равносильно строке 31

            MyDelegate2 myDelegate2 = new MyDelegate2(MyStaticClass.Method2);

            myDelegate2("Alex");

            MyClass     myClass = new MyClass();
            MyDelegate3 deleg   = new MyDelegate3(MyClass.Method3);

            deleg("Roma");

            MyDelegate d0;//назвал сокращенно делегат d
            MyDelegate d1 = new MyDelegate(Method1);
            MyDelegate d2 = new MyDelegate(Method2);
            MyDelegate d3 = new MyDelegate(Method3);

            d0 = d1 + d2 + d3;

            d0();

            Console.WriteLine("Enter 1 - 7");
            string choise = Console.ReadLine();

            switch (choise)
            {
            case "1":
                d1.Invoke();
                break;

            case "2":
                d2.Invoke();
                break;

            case "3":
                d3.Invoke();
                break;

            case "4":
                MyDelegate d4 = d0 - d1;
                d4();
                break;

            case "5":
                MyDelegate d5 = d0 - d2;
                d5();
                break;

            case "6":
                MyDelegate d6 = d0 - d3;
                d6();
                break;

            case "7":
                d0();
                break;
            }

            MyDelegate d10 = new MyDelegate(delegate { Console.WriteLine("Hello!!!"); Console.WriteLine("Hello!!!!!!!!!!!!!"); });//равносильно строкам 115-119

            d10();

            MyDelegate d11 = delegate                    //равносильно строке 112
            {                                            //равносильно строке 112
                Console.WriteLine("Hello!!!");           //равносильно строке 112
                Console.WriteLine("Hello!!!!!!!!!!!!!"); //равносильно строке 112
            };                                           //равносильно строке 112

            d11();

            int sum1 = 1, sum2 = 2, sum = 0;

            MyDelegate4 d31 = delegate(int a, int b) { return(a + b); };

            M1();
        }
        static void Main(string[] args)
        {
            IMethods methods = new MyClass();

            MyDelegate1 myDelegate1 = new MyDelegate1(methods.Method1);

            Console.WriteLine(myDelegate1.Invoke());

            Console.WriteLine(new string('-', 25));

            MyDelegate1 myDelegate1_2 = methods.Method1;
            MyDelegate1 mydel         = myDelegate1 + myDelegate1_2 + delegate { return("Anonymous Method"); };

            Console.WriteLine("myDelegate1 + myDelegate2 + Anonymous Method");
            Console.WriteLine(mydel);

            Console.WriteLine(new string('-', 25));

            MyDelegate4 myDelegate4 = null;

            int[] @params = { 1, 2, 3, 4, 5 };

            myDelegate4 = delegate(int[] a) { return(a); };
            foreach (string item in methods.Method2(myDelegate4(1, 2, 3, 4, 5, 6)))
            {
                Console.WriteLine(item);
            }

            Console.WriteLine(new string('-', 25));

            MyDelegate2 myDelegate2 = delegate(int a) { Console.WriteLine("Method Param is delegate."); return(a * 2); };

            Console.WriteLine(methods.Method3(myDelegate2(5)));

            Console.WriteLine(new string('-', 25));

            Console.WriteLine("Lambda operator.");
            myDelegate2 = (a) => { return(a * 2); };
            Console.WriteLine(methods.Method3(myDelegate2(5)));

            Console.WriteLine(new string('-', 25));

            Console.WriteLine("Lambda Expression.");
            myDelegate2 = a => a * 2;
            Console.WriteLine(methods.Method3(myDelegate2(5)));

            Console.WriteLine(new string('-', 25));

            MyDelegate3 del = () => 6;

            Console.WriteLine("Lambda Expression.");
            Console.WriteLine(del + "\nMyDelegate3 => " + del());

            Console.WriteLine(new string('-', 25));

            Del1 delegate1 = new Del1(Method2);

            Del2 delegate2 = delegate1();

            Console.WriteLine("Del2.Method2() => Method1() => " + delegate2());

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            MyDelegate del = new MyDelegate(MethodA);

            del("This is first way");

            MyDelegate del1 = MethodA; //second way

            del("This is delegate invoking function");

            MyDelegate del3 = MethodA;

            del3.Invoke("This is another way");

            MyDelegate2 del2 = new MyDelegate2(MethodA1);

            del2(5, 6);

            MyDelegate del4 = ClassA.MethodA;

            del4("Hello World");


            MyDelegate del5 = ClassB.MethodB;

            del5("Hello World");

            InvokeDelegate(del4); //another method for Invoking delegte
            InvokeDelegate(del5);

            MyDelegate delCombine = del4 + del5;  //combine del4 and del5 they executing one by one

            delCombine("Hello Both Combination");

            delCombine += del1;   //add del1 also
            delCombine.Invoke("This is by Multicasting");

            delCombine -= del4;  //removing del4
            delCombine("Remove Class A ");

            delCombine = delCombine - del1 - del5; //Removing del1 and del5
            if (delCombine != null)
            {
                delCombine.Invoke("Remove Method Del1 also");
            }
            else
            {
                Console.WriteLine("Delegate is Null");
            }
            //del = (string msg) => Console.WriteLine("Called lambda expression: " + msg);
            //del("Hello World");

            //Multicasting of Delegates
            MyDelegate3 delegate_int1 = Class1.Method1;
            MyDelegate3 delegate_int2 = Class2.Method2;
            MyDelegate3 delegate_int3 = delegate_int1 + delegate_int2; //here also as assignment bcause it returns value

            Console.WriteLine(delegate_int3());                        //print 200

            MyDelegate4 Delegate4del = Class1.Method12;
            int         a            = Convert.ToInt32(Delegate4del(300));

            Console.WriteLine(a);

            MyDelegate4 Delegate4del1 = Class2.Method22;
            int         b             = Convert.ToInt32(Delegate4del1(400));

            Console.WriteLine(b);

            InvokeDelegate4(Delegate4del1); //by using Invoke method created by own

            // Delegate4del1 += Delegate4del; //Here it work as assignment
            int b1 = Delegate4del1(100);

            Console.WriteLine(b1 + "This is Combine but work as assignment");

            Delegate4del = Delegate4del1; // assigning the delegate
            InvokeDelegate4(Delegate4del1);

            Console.ReadKey();
        }
        static void InvokeDelegate4(MyDelegate4 del) //it contain Parameter of MyDelegate4
        {
            int value = del(500);

            Console.WriteLine("This is value after Invoking {0}", value);
        }