C#中的委托 Delegate(委托 也叫代表,代表一类方法)

C#中的委托 Delegate(委托 也叫代表,代表一类方法)

转载自: [link]:https://www.cnblogs.com/tommy-huang/p/4828589.html

1. 委托类似与 C或C++中的函数指针,但委托是 面向对象的,并且是类型安全的
详情可查看官方文档:https://msdn.microsoft.com/en-us/library/ms173172.aspx

2. 委托就相对与一类方法 (即方法类,或者方法接口)

而这一类方法都具有相同的 修饰符、形参以及 返回值类型

2.1. 委托 既是方法:

public delegate void Del(string message);

声明委托的方式如下:在修饰符后加上 delegate ['dɛlɪɡət]关键字

从格式上看,它与方法的声明极为相似,就是多了个 delegate关键字而已
表示声明了一类,修饰符为public、一个string类型形参的、没有返回值的方法

2.2. 但 委托 不是普通的方法,因为 它也是类,
所以委托只能声明,而不能定义,如不能这样写:

private delegate void Doing(string name){
      System.Windows.MessageBox.Show();
}

2.3. 实例化委托,调用委托

//声明一个void, 形参是string的委托
public delegate void Del(string name);
 
//定义个个cut方法
public void cut(string name)
{
       System.Windows.MessageBox.Show("fuck " + name);
}
//实例化委托,传的参数是一个方法的名字,这里是cut
Del a = new Del(cut);
a("CCC");//调用委托,相当于调用cut("CCC");
3. 委托 有什么用,搞这么复杂有什么意思

3.1. 将方法名作为方法参数传递,提高代码的多变性和灵活性,如下:

public delegate void SayHello();
 
public void SayInEnglish(){
      toSay = "Hello";
}
 
public void SayInChinese(){
      toSay = "你好";
}
 
public void HelloToSomebody(SayHello say){//将方法作为参数来传递
      say(toSay);
      System.Windows.MessageBox.Show(toSay);
}

以及:

+ View Code
4. 委托 的多播 (Multicasting of a Delegate) “+=”、"-="
+ View Code

注意:委托对象可使用 “+” 运算符进行合并。一个合并委托调用它所合并的两个委托。只有相同类型的委托可被合并。
“-” 运算符可用于从合并的委托中移除组件委托。

总结:

  1. 委托 即使 方法,又是 类(一种特殊的方法:可以方便统一调用;特殊的类,能当方法来用的类,这也够特殊了吧),委托是一类方法

  2. 委托 先声明,后实例化,然后才能调用,委托的参数 是一个方法名

  3. 委托的 多调 "+=" , 相反操作 "-="

  4. 委托 主要用于事件 还有回调函数中····
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值