Exemplo n.º 1
0
        public static void Show()
        {
            Student student = new Student();//声明类以及调用

            student.Id   = 11;
            student.Name = "";
            student.Study();
            NoReturnWithPara method  = new NoReturnWithPara(Plus); //2委托的实例化,传入一个方法名称 要求方法签名一致
            NoReturnWithPara method1 = Plus;                       //简明声明委托

            //用Lamdba表达式实现
            {
                NoReturnWithPara method2 = (x, y) => Console.WriteLine("x={0},y={1}", x, y); //匿名方法体
            }
            method.Invoke(1, 2);                                                             //3调用
            method.BeginInvoke(1, 2, null, null);                                            //没有委托就没有异步
            method(1, 2);                                                                    //调用
            Plus(4, 5);
            method += Plus;
            method += Plus;
            method += Plus;
            method -= Plus;//多播委托

            //foreach (NoReturnNoPara item in method.GetInvocationList())//获取委托的实列
            //{
            //    item.Invoke();
            //}
        }
Exemplo n.º 2
0
        public void Show()
        {
            //2.实例化委托
            NoReturnNoPara delegateNoParaObj = new NoReturnNoPara(this.DoNothing);

            delegateNoParaObj.Invoke();

            NoReturnWithPara delegateWithParaObj = new NoReturnWithPara(this.WithParaNothing);

            delegateWithParaObj.Invoke(2, "sss");



            for (int i = 0; i < 10; i++)
            {
                delegateWithParaObj.BeginInvoke(i, i.ToString(), delegate(IAsyncResult t)
                {
                    Console.WriteLine("当前线程ID:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
                }, "哈哈哈");
            }
        }