C#的委托

本文探讨了C#中委托的概念及其实现方式,并将其与C/C++中的函数指针进行了对比。详细介绍了委托的安全性特点、实例化过程以及多重委托的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       今天在极客学院学的C#委托章节,觉得很有意思,说点我的课后感悟跟大家讨论讨论。

      C#中的委托与C、C++中的函数指针很类似,但是比他们要安全的很多(我觉得授课布道师讲得最多的就是C#如何写一个安全可靠的程序)。怎么安全呢?每个委托的声明delegate  类型  函数名 (参数类型  parameter),函数类型、参数类型都要与你要调用的函数完全一致才可以用哦,这就避免了因为类型不一而可能产生的问题。

     这里用delegate  void  my_delegate (int i);这个声明来做例子。

     对于一个静态(static修饰的,以前我总是不明有的方法为什么要用static来修饰)的函数方法,每一个实例化的委托都可以在实例化时直接将该静态的函数名放进去就好,但如果不是静态的(没有static修饰的),就要先实例化这个方法所在的类,再调用这个类的的实例来实例化你的委托。比如你的非静态方法在class  C里,那么就要先 C  _c = new C();

然后在进行 my_delegate   一个实例 = new  my_delegate(_c.方法名); 

     委托的好处就是一个委托实例可以实现对多种方法的调用,哈哈这样写程序就很清晰了(不过好像也并没什么卵用啊,我直接实例一个类,要用那个函数直接调用哪个函数不也行吗)。

    还有一个重点就是多重委托,比如 my_delegate  my_d1 = new   my_delegate(方法1);

                                                                 my_delegate  my_d2 = new   my_delegate(方法2);

                                                                 my_delegate  my_d3 = my_d1  +  my_d2;

                                                                 my_d3(.......);

                                                             通过一个my_d3就实现了两个方法有顺序的调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值