C#基础 委托和事件分析与总结与Observer设计模式

一,理解将方法作为方法的参数

首先定义一个委托修饰符是delegate如下代码

 //定义委托,它定义了可以代表的方法的类型
        public delegate void NewDelegate(string name);

然后将参数绑定到委托里

   public void One(string x) {
    Console.WriteLine("输出1:, " + x);
}
 //需要使用委托执行的方法1
  public void Two(string x) {
    Console.WriteLine("输出2:, " + x);
}
//这里的两个参数分别是传入的某个参数和我们之前定义的委托
public void GreetPeople(string x, GreetingDelegate MakeGreeting){
    MakeGreeting(x);
}
  static void Main(string[] args) {
    NewDelegate delegate1, delegate2;
    delegate1 = One;
    delegate2 = Two;
//这里对应的是参数和执行的某个委托
    GreetPeople("HELLO1", delegate1);
    GreetPeople("HELLO2", delegate2);
//当然也可以忽略GreetPeople方法直接执行委托
 delegate1 ("HELLO1");
 delegate2 ("HELLO2");
  Console.ReadKey();
}
输出为:
输出1:HELLO1
输出2:HELLO2

委托不同于string的一个特性:可以将多个方法赋给同一个委托,或者叫将多个方法绑定到同一个委托,当调用这个委托的时候,将依次调用其所绑定的方法。在这个例子中,语法如下:

 static void Main(string[] args) {
   NewDelegate delegate;
    delegate = One; // 先给委托类型的变量赋值
    delegate += Two;   // 给此委托变量再绑定一个方法

     // 将先后调用 One与 Two方法
    GreetPeople("HELLO", delegate1);  
    Console.ReadKey();
}
输出为:
输出1:HELLO
输出2:HELLO
//同时 +=可以在绑定一个方法 -=也可以取消绑定的方法
static void Main(string[] args) {
   NewDelegate delegate;
    delegate = One; // 先给委托类型的变量赋值
    delegate += Two;   // 给此委托变量再绑定一个方法
 delegate -= Two;   // 给此委托变量再绑定一个方法
     // 将先后调用 One与 Two方法
    GreetPeople("HELLO", delegate1);  
    Console.ReadKey();
}
输出为:
输出1:HELLO
让我们再次对委托作个总结:

使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。

一,事件的理解

事件其实没什么不好理解的,声明一个事件不过类似于声明一个进行了封装的委托类型的变量而已。
委托、事件与Observer设计模式我写了一个案例以便大家理解
https://download.csdn.net/download/q944468002/12095644

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值