示例#1
0
        private void btnTest_Click(object sender, EventArgs e)
        {
            //语法糖:在C#中有很多 简洁语法,实质是由编译器 在编译时 转成 完整语法,那么这种 简洁语法叫做语法糖
            //2.创建委托对象
            DGTest dg = Test;//new DGTest(this.Test);

            /*3.为委托追加方法的本质:
             *    是为 被追加的方法创建一个新的委托对象,并将 方法 指针存入对象的 父类的父类(Delegate)的 IntPtr 变量中
             *    然后再将 新创建的委托 添加到 当前委托对象(dg)的 数组中
             */
            dg += Test2; //编译后:(DGTest) Delegate.Combine(dg, new DGTest(this.Test2));
            dg += Test3; //编译后:(DGTest) Delegate.Combine(dg, new DGTest(this.Test3));
            dg -= Test3; //编译后:(DGTest) Delegate.Remove(dg, new DGTest(this.Test3));

            /*4.调用委托,其实就是通过调用委托对象里的Invoke方法 遍历 委托内部的数组,然后依次调用 数组中的 方法
             */
            dg();//编译后:dg.Invoke();

            /* 委托的作用:
             *   1.将方法做为参数
             *   2.将方法作为返回值
             */
        }
示例#2
0
        private void btnReturn_Click(object sender, EventArgs e)
        {
            DGTest dg = InvokeTest("1");

            dg();
        }
示例#3
0
 /// <summary>
 /// 委托当参数使用: 调用 3个 Test 方法 中的某一个
 /// </summary>
 /// <param name="strType"></param>
 public void InvokeTest(DGTest dgTest)
 {
     dgTest();
 }