Exemple #1
0
        public delegate void WithParaWithReturn(string str); //有参数有返回值

        /// <summary>
        /// 二‘委托的使用
        /// </summary>
        public void Usage()
        {
            #region 调用无参数无返回值的委托
            //委托的实例化
            NoParaNoReturnOutClass method = new NoParaNoReturnOutClass(Example);
            //委托实例的调用
            method.Invoke();
            //也可这样调用
            method();
            #endregion

            #region 调用无参数有返回值的委托
            NoParaWithReturn NoParaWithReturnMethod = new NoParaWithReturn(Examples);
            //接收返回值
            string result = NoParaWithReturnMethod.Invoke();
            #endregion

            #region 调用有参数无返回值的委托
            WithParaNoReturn WithParaNoReturnMethod = new WithParaNoReturn(Example);

            string str = string.Empty;
            //传递参数
            WithParaNoReturnMethod(str);
            #endregion

            #region 多播委托
            NoParaNoReturn multicast = new NoParaNoReturn(Example);
            //按顺序添加到方法列表
            multicast += Example;
            multicast += Example;
            multicast += Example;
            //从方法列表的尾部去掉且只去掉一个完全相同的方法
            multicast -= Example;
            #endregion
        }
Exemple #2
0
        public static void show()
        {
            #region lesson1
            // NoParaNoReturn method=new NoParaNoReturn(ShowSomething);//委托的实例化
            // method.Invoke();//method(ShowSomething)
            #endregion

            NoParaWithReturn noParaWithReturn = new NoParaWithReturn(GetSomething);
            System.Console.WriteLine("getsomething_first_invoke:{0}", noParaWithReturn.Invoke());
            #region test2
            // System.Console.WriteLine("getsomething_second_invoke:{0}",noParaWithReturn());
            #endregion

            #region lesson2
            //多播委托
            noParaWithReturn += GetSomething;
            noParaWithReturn += GetSomething;
            noParaWithReturn += GetSomething;
            noParaWithReturn += GetSomething;

            noParaWithReturn -= GetSomething;
            #endregion
        }