c#委托学习

张开发
2026/4/12 21:36:58 15 分钟阅读

分享文章

c#委托学习
委托概念委托是 函数(方法)的容器可以理解为表示函数(方法)的变量类型用来 存储、传递函数(方法)委托的本质是一个类用来定义函数(方法)的类型返回值和参数的类型不同的 函数(方法)必须对应和各自格式一致的委托委托常用在1.作为类的成员2.作为函数的参数基本语法关键字 delegate语法访问修饰符 delegate 返回值 委托名(参数列表);写在哪里可以申明在namespace和class语句块中更多的写在namespace中委托规则的申明 是不能重名同一语句块中定义自定义委托访问修饰默认不写 为public 在别的命名空间中也能使用申明了一个可以用来存储无参无返回值函数的容器delegate void MyFun();表示用来装载或传递 返回值为int 有一个int参数的函数的 委托 容器规则public delegate int MyFun2(int a);委托是支持 泛型的 可以让返回值和参数 可变 更方便我们的使用delegate T MyFun3T, K(T v, K k);使用定义好的委托MyFun f new MyFun(Fun); f.Invoke(); MyFun f2 Fun; f2(); MyFun2 f3 Fun2; Console.WriteLine(f3(1)); MyFun2 f4 new MyFun2(Fun2); Console.WriteLine(f4.Invoke(3)); static void Fun() { Console.WriteLine(张三做什么); } static int Fun2(int value) { return value; } static void Fun3() { Console.WriteLine(李四做什么); }class Test { public MyFun fun; public MyFun2 fun2; public Action action; public void TestFun( MyFun fun, MyFun2 fun2 ) { //先处理一些别的逻辑 当这些逻辑处理完了 再执行传入的函数 int i 1; i * 2; i 2; //fun(); //fun2(i); //this.fun fun; //this.fun2 fun2; } } Test t new Test(); t.TestFun(Fun, Fun2);委托变量可以存储多个函数(多播委托)MyFun ff null; //ff ff Fun; ff Fun; ff Fun3; ff(); //从容器中移除指定的函数 ff - Fun; //多减 不会报错 无非就是不处理而已 ff - Fun; ff(); //清空容器 ff null; if( ff ! null ) { ff(); }系统定义好的委托使用系统自带委托 需要引用using System;Action无参无返回值Action action Fun; action Fun3; action();可以指定返回值类型的 泛型委托Funcstring funcString Fun4; Funcint funcInt Fun5;可以传n个参数的 系统提供了 1到16个参数的委托Actionint, string action2 Fun6;可以穿n个参数的 并且有返回值的 系统也提供了 16个委托Funcint, int func2 Fun2;Func 如何区分返回值和参数类型通过泛型参数列表的固定顺序来区分最后一个泛型参数永远表示返回值类型前面的所有泛型参数都表示方法参数的类型。

更多文章