static void Main(string[] args) { MyFunCollection f = new MyFunCollection(Fun); //这里就用委托容器f装载了函数Fun,这个Fun必须符合MuFunCollection的定义要求 f.Invoke(); //调用MyFunCollection存储的函数 //也可以这样用 = 将函数装载进委托 MyFunCollection f2 = Fun; //注意没打(),不然就是调用了 f2(); //另一种调用方式 MyIntFun f3 = Fun2; //将委托作为参数传入类中的函数 Test t = new Test(); t.TestFun(f, f3); Console.WriteLine("多播委托******************************"); //多播委托 MyIntFun intfun = new MyIntFun(Fun2); intfun += Fun3; //用+= 表示新加一个函数 intfun(3); //两种调用方法 //intfun.Invoke(3); Console.ReadLine(); }
//委托作为函数参数,可以将函数传入另一个函数 public void TestFun(MyFunCollection fun1, MyIntFun fun2) //这个TestFun的参数是两个委托 { //可以在这个函数里处理一些逻辑之后再运行传进来的参数 //例如有个数据a,在这个函数之前值不确定,但又会被后面的函数调用 //那么就可以先计算,再传进函数 int a = 3 * 1 * 45214 + 697; fun2.Invoke(a); }