Ejemplo n.º 1
0
        public void Execute()
        {
            Student st1 = new Student("王翦");
            Teacher th1 = new Teacher("卫青");

            //MyDelegate01 md1 = new MyDelegate01(st1.SayHello);
            MyDelegate01 md1 = st1.SayHello; //此处不可以用+=,因为此时委托还未实例化

            md1 += st1.DoHomework;           //多播委托(一个委托可以关联多个方法)
            md1 += th1.TeachEnglish;
            md1 += st1.DoHomework;           //同一个方法,可以添加多次,这样委托调用时就会执行多次

            //也可以添加静态方法
            md1 += Student.PlayGame;

            Student      st2 = new Student("小李");
            Teacher      th2 = new Teacher("老李");
            MyDelegate01 md2 = new MyDelegate01(st2.DoHomework);

            //md2 += st2.SayHello;
            md2 += th2.TeachEnglish;

            //将委托md2拥有的方法,添加到md1上
            md1 += md2;

            md1 -= st1.DoHomework; //会将后添加的方法移除
            md1 -= st2.SayHello;   //移除一个不存在的方法,不会报错

            //md1.Invoke();//调用执行委托
            md1();//调用执行委托
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            //Delegates

            //1. Placeholder for one of more methods
            //2. Can use in anonymous 'lambda' expressions
            //3. Link to events

            var delegateInstance = new MyDelegate01(Method01);

            delegateInstance();
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            MyDelegate01 myDelegateInstance = Method01;

            Action myotherdelegateinstance = Method02;

            myDelegateInstance();

            Delegate_2 delegate_2instance = Method03;

            Console.WriteLine(delegate_2instance(6, true));
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            // Delegates

            // 1. Placeholders for one or more methods
            // 2. Can use in anonymous 'lambda' expressions, very useful particularly with 'async' web calls
            // 3. Link to events ==> EVENT FIRES EG BUTTON CLICK ==> All methods must match pattern in our delegate
            //              void MyDelegate01(); Any methods match pattern void MyMethod();
            //              string      (int)                              string   (int);

            // Create event ==> run given methods
            // 1. Create delegate (top)

            // 2. Create delegate instance
            var delegateInstance = new MyDelegate01(Method01);

            // 3. run delegate instance ==> call our method
            delegateInstance();
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            //Delegates

            //1. Placeholder for one or more methods
            //2. Can use in annoymous 'lambda' expressions, very usefull particually with 'async' web calls
            //3. Link to events ==> EVENT fires eg button click ==> all methods must match pattern given in our delegate
            //               void myDelegate01(); any methods would have to match pattern void myMethod();
            //               string          (int)                                       string          (int)


            //Create an event ==> and run given methods
            //1. Create Delegate
            //2. Create delegate instance
            var delegateInstance = new MyDelegate01(Method01);

            //3. Run the delegate instance and will call the method
            delegateInstance();
        }