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 }
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 }