• C#中的接口、事件、代理总结


    C++与C#之间语法大都基本相同,其面向对象的思想也是一致的,但是C#比C++还是有很多的区别,下面就C#中新添的接口、事件、代理来谈一谈。
    1、接口
      接口是定义了类要实现的一系列方法,但是他自己并不实现它,只是以逻辑结构的方式来描述类所提供的一系列没有具体实现的方法。
    简单的接口声明格式如下:
    1interface name

    接口中的方法默认为public,不用显式指定访问属性。
    除了方法名称,接口还声明了属性、索引、和事件的名称,任何成员都不能声明为static.当一个类实现一个接口时,就必须实现整个接口,不能选择要实现接口的哪个部分。
        1.1使用接口引用
         可以创建接口引用变量,该变量可以引用任何实现接口的对象。该方法是执行对象实现的方法版本。这个过程类似于基类引用访问派生类对象的情况。
    1.4显示实现
      创建接口成员的显式实现由两个原因。第一,一个类有可能同时实现两个接口,每个接口都声明了相同名字和类型的方法。因此,采用全称作用域能消除歧义。第二,当使用全称作用域实现一个方法时,就相当于提供了不是处于类外代码的一个私有实现。

    二、代理
        代理就是一个可以引用方法的对象,和c\c++中的函数指针相似。
    代理的建立过程就是首先声明一个代理通过关键字delegate
    格式如下:delegate ret_type name(papam-list)
    然后通过创建这个代理的引用,将这个代理进行对象实例化,也就是代理创建一个函数的模型,通过指定其函数的返回值、参数类型和个数,那么这个这函数具体做了什么在运行时通过赋予它的对象来决定。
    之后要调用这个函数,只需要将这个代理的引用直接将参数传进去了。
     2.1多播
      代理有一个比较吸引人的特性是支持多播。也就是支持创建方法链表的能力。但是使用多播有一个限制就是要函数的返回类型为void.多播时只需要通过+=来将方法加入到代理中。
    三、事件
        事件就是自动通知某个事件发生。关心某事件的对象向事件中注册事件处理,当事件发生时,就会调用所有已注册的事件处理程序。事件处理程序要用代理来表示。
        事件是类成员,并以event声明,一般格式如下:
        event event-delegate objec-name;
    所有的事件是通过代理来激活的
  • 相关阅读:
    [AHOI2006]文本编辑器 Splay tree区间操作
    HDU-3487 Play with Chain Splay tee区间反转,移动
    HDU-4619 Warm up 2 二分匹配
    HDU-4618 Palindrome Sub-Array 暴力枚举
    HDU-4616 Game 树形DP
    HDU-4614 Vases and Flowers 线段树区间更新
    HDU-4612 Warm up 边双连通分量+缩点+最长链
    HDU-4611 Balls Rearrangement 循环节,模拟
    HDU-4605 Magic Ball Game 树状数组+离散+dfs
    HDU-3436 Queue-jumpers 树状数组 | Splay tree删除,移动
  • 原文地址:https://www.cnblogs.com/yukun/p/487592.html
Copyright © 2020-2023  润新知