委托和事件的理解


委托
  ①委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数进行传递,这种将方法动态地附给参数的作法,可以避免在程序中大量使用if--else(switch)语句,同时使得程序有更好的可扩展性。
  ②使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。
事件
  ①事件也是一个委托,它是一个特殊的委托,一般由event来修饰,event它封装了委托类型的变量,使得:在类的内部,不管你声明它是public还是protected,它总是private的。在类的外部,注册“+=”和注销“-=”的访问限定符在声明事件时使用的访问符相同
  ②被event修饰的委托只能出现在“+=”或“-=”的左侧。
如下代码:
public class GreetingManager
{    
//这一次我们在这里声明一个事件
    public event GreetingDelegate MakeGreet;
    public void GreetPeople(string name) 
    {
        MakeGreet(name);
    }
}
    

 

为了证明上面的推论,如果我们像下面这样改写Main方法:
static void Main(string[] args) 
{
    GreetingManager gm = new GreetingManager();
    gm.MakeGreet = EnglishGreeting; // 编译错误1
    gm.MakeGreet += ChineseGreeting;
    gm.GreetPeople("Jimmy Zhang");
}

 

转载于:https://www.cnblogs.com/NaiHe0630/p/8805504.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值