C#学习笔记-delegate 委托

Delegate:简单的可以理解为动词名词化。
委托是一个函数的引用,拥有和函数相同的返回值类型,
而委托实际上是一个类,他能够持有对某种方法的引用,该类拥有一个签名,只能应用与其签名相匹配的方法。
正因为一个委托是一个实例化的类(一个对象),所以委托是受控制和安全的。
实现一个委托:
1:声明delegate对象,与想传递给他的方法具有相同的返回值类型
2:创建delegate对象,将想要引用的函数做为参数传入
3:在实现异步调用的地方,通过创建的委托对象(一个委托类的实例)来调用方法

应用
当 Win32 函数需要返回多项数据时,通常都是通过回调机制来实现的。开发人员将函数指针传递给函数,然后针对每一项调用开发人员的函数。
在 C# 中没有函数指针,而是使用“委托”,在调用 Win32 函数时使用委托来代替函数指针。

委托调用
方法一:创建委托对象后,将委托对象传递给调用委托的其他代码(如一个方法)。通过委托对象的名称(后面跟着要传递给委托的参数)调用委托对象
eg:

    //声明一个委托:
public class DelegateClass
{
       public delegate void DelegateA(String s);
      private void FA(String s)
      {    
           MessageBox.Show("hi "+ s);
      }
      private void FB(String s)
      {
           MessageBox.Show("88 " + s);
      }
      private void FC(String s)
      {
           MessageBox.Show("this is " + s);
      }
      public void DoDelegateA(DelegateA da,String info)
      {
           da(info);
      }
}

调用:
实例化类:
DelegateClass dc = new DelegateClass();
dc.DoDelegateA(new DelegateA(FA),“haha“);//将FA的引用传递给一个DelegateA委托实例
dc.DoDelegateA(new DelegateA(FB),“hoho“);
输出消息框显示分别为:
hi haha
88 hoho

方法二:实例化委托对象,直接传递参数给委托对象调用
还是比如上面的类中
DelegateA delegateA = new DelegateA(FC);
delegateA(“heihei“);

补充中...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值