跨类调用委托
来源:互联网 发布:gigi hadid 知乎 编辑:程序博客网 时间:2024/06/04 20:12
委托本质上就是利用方法的指针进行回调,当有两个类A、 B,我们在A类中调用B类。又发现B类需要使用A类的方法。也就是当执行流程从A 执行到B后,中途又回到A执行,然后在继续在B中执行。实际的使用例子就是父窗体调用子窗体,然后子窗体又需要调用父窗体的方法。。例如:
// (一) 说明委托,用于接受方法指针,该参数应该声明与class之外,这样所有的class都能使用。 public delegate int weituo(int a, int b); public class class_A//主执行类(被回调类) { public weituoweituo1;//(二)声明委托用于回调(回调与被回调类都要声明) public int Add(int a, int b)//(三)委托指向的方法 签名必须一致(返回值,和形参) { return a + b; } public voidDo_class_B()//调用B类,再从B类执行回调 { class_B cb = new class_B(); cb.weituo1 = this.weituo1;//(四)将委托传入B类 cb.classB_add(); } public class_A() { weituo1= new weituo(this.Add);//(四)通过构造方法将回调方法注入委托 }}------------------------------------------------------------------------------------- public class class_B//回调类 { public weituoweituo1;//(二)声明委托用于回调(回调与被回调类都要声明) public voidclassB_add() { Console.WriteLine( weituo1(3, 6));//执行回调 }}------------------------------------------------------------------------------------- class Program { static void Main(string[] args) { class_A class_A = newclass_A(); class_A.Do_class_B(); } }
1 首先在声明一个公共的delegate委托类型,使它能指向某类方法。
2 在回调、被回调类中都声明该委托。
3 在被回调类中用构造函数将回调方法注入委托。
4 实例化回调类后,将委托传递给回调类
5 在回调类中使用委托执行回调方法
我们可以发现委托也是通过实例化来的,例如:
call1 = newcall(math.Add);,
构造方法里的参数是被委托对象的方法。这时,委托就是这个方法的引用变量。我们可以利用这个引用将方法当作一个变量来传参。
publicvoid ppu(call d,int a, int b)//利用委托将方法(指针)当作参数传入。
{ Console.WriteLine(d(a,b));
}
在实际使用中,委托也可以实现接口的先调用后实现的功能。即先在一个类中调用委托,然后使用的时候在根据需要说明委托引用的方法。从而实现功能插入
特别强调,说明委托时,参数必须一致,输入参数和返回值都要检查。
- 跨类调用委托
- 委托调用
- C# 委托跨窗口调用Button
- 泛型委托调用的一个类
- C#异步调用委托工具类
- 异步委托调用
- "委托" 窗体之间调用
- 委托异步调用
- 异步委托调用
- 异步委托调用
- 异步调用委托
- 委托异步调用
- C#委托调用实例
- swift 调用oc委托
- 委托 方法 调用
- 异步委托调用
- 异步委托调用
- 委托(一): 委托的定义和调用
- 安卓系统程序文件注释说明以及删除建议(续)
- UIView添加背景图片的具体方法
- 拿到本地apk的verisoncode 和已安装的apk verisoncode
- Windows上,调整dpi可使字体变大
- 关于ios颜色渐进的总结
- 跨类调用委托
- Shell脚本调试技术
- Linux通过脚本实现远程自动备份
- Linux多线程编程(不限Linux)
- JAVA常用类库---比较器(Comparable、Comparator)
- sql语句性能优化
- Memcache缓存与Mongodb数据库的优势和应用
- oracle 表信息查询
- crontab 命令详解