zoukankan      html  css  js  c++  java
  • 事件2

    接着委托:

    声明之前要定义委托。

    实际应用中:

    public class GreetingManager{
    //在类内部声明delegate变量
      public GreetingDelegate delegate1;
      public void GreetPeople(sting name){
        if(delegate1!=null){
          delegate1(name);
        }
      }
    }
    GreetingManager gm=new GreetingManager();
    gm.delegate=EnglishGreeting;
    gm.delegate+=ChineseGreeting;
    gm.GreetPeople("Jimmy Zhang");

    delegate1若为public,则客户端对他不可见根本没用;private客户端随意赋值破坏封装性。

    第一个用=第二个用+=,感觉不好。

    所用Event出现了,它封装了委托类型的变量。类似string类型的属性对字段的封装。使得:在类的内部,不管声明的是public还是protected,它总是private的。在类的外部,注册“+=”和注销“-=”的访问限定符与你声明事件时使用的访问符相同。

    上述改写为:

    publice class GreetingManager{
      //这一次我们在这里声明一个事件
      public event GreetingDelegate MakeGreer;
      public void GreetPeople(string name){
        MakeGreet(name);
      }
    }
    GreetingManager gm=new GreetingManager();
    gm.MakeGreet+=ChineseGreeting;
    gm.GreetPeople("Jimmy Zhang");

    MakeGreet被声明为私有的不能用“=”赋值。有两个方法add、remove对应+=和我-=。

  • 相关阅读:
    ckfinder+ckeditor配置经验
    人人商城模块研究
    微擎小程序支付功能+退款功能
    php服务器网络请求
    linux对workerman的扩展和配置
    linux安装php_screw加密php代码
    webForm渲染视图的基本方法
    sql注入和暴库
    数据库设计命名规范
    枚举、结构体、联合体的简单应用程序-C语言
  • 原文地址:https://www.cnblogs.com/yzj1212/p/2639935.html
Copyright © 2011-2022 走看看