public void Show() { NoReturnNoPara noReturnNoPara = new NoReturnNoPara(DoNothing); //2 委托的实例化 noReturnNoPara.Invoke(); //3 委托实例的调用 { WithReturnWithPara withReturnWithPara = new WithReturnWithPara(this.DoNothing2); string result = withReturnWithPara.Invoke(2); Console.WriteLine(result); } { //多播委托:一个变量保存多个方法,可以增减;invoke的时候可以按顺序执行 //+= 为委托实例按顺序增加方法,形成方法链,Invoke时,按顺序依次执行 NoReturnNoPara method = new NoReturnNoPara(this.DoNothing); method += new NoReturnNoPara(this.DoNothing); method += new NoReturnNoPara(DoNothingStatic); method.Invoke(); foreach (NoReturnNoPara item in method.GetInvocationList()) { item.Invoke(); } //-= 为委托实例移除方法,从方法链的尾部开始匹配,遇到第一个完全吻合的,移除且只移除一个,没有也不异常 method -= new NoReturnNoPara(this.DoNothing); method -= new NoReturnNoPara(DoNothingStatic); method.Invoke(); } }
public static void Show() { { NoWithReturnPara method = new NoWithReturnPara(ShowStudent); //实例化委托 method.Invoke(186, "joney"); //调用委托 } { NoWithReturnPara method = delegate(int id, string name)//匿名方法 { Console.WriteLine("id={0},name={1}正在上班。", id, name); }; method.Invoke(213, "Saly"); } { NoWithReturnPara method = (id, name) => { Console.WriteLine("id={0},name={1}正在开会。", id, name); }; method.Invoke(88, "Jamer"); } { NoWithReturnPara method = (id, name) => Console.WriteLine("id={0},name={1}正在执行终极任务。", id, name); method.Invoke(168, "Hammer"); } { NoReturnNoPara method = () => { }; NoWithReturnWithOnePara method1 = i => Console.WriteLine(i); method1.Invoke(12); } { WithReturnWithPara method = (m, n) => { return(DateTime.Now.Second); }; Console.WriteLine("当前时间second={0}", method.Invoke(1, "jj")); } { WithReturnWithPara method = (m, n) => DateTime.Now.Second; Console.WriteLine("当前时间second={0}", method.Invoke(1, "kk")); } { Action method = () => { }; Action <int> act1 = i => { }; } }