zoukankan      html  css  js  c++  java
  • C#中的委托与事件 荣

    delegate及event在C#中叫委托与事件。他们的作用就是在类外执行其他对象的一个函数的操作。

    最近看C++的相关文章才知道,

    原来我们定义一个委托,其实就是定义一个函数格式,它可以告诉编译器,当代码中调用到该委托的时候,它的格式是什么样子的【返回值,参数数量,参数类型】

    事件就是一个函数指针,它告诉程序,你把合适的地址及参数传给我,我就能给你做你希望我做的事情。事件在未绑定的时候是空的,因为该指针未指向任何地址。

    而绑定事件,则是告诉程序,这个函数指针的地址是什么。这个函数指针的地址,就是绑定到这个事件上的方法的起始地址,绑定告诉地址,从方法的起始地址开始,直到跳出函数这一块,就是程序想让你做的,你一步步做下来就行了。



    C#中的委托与事件其实是与C++众的函数指针相对应的。
    第一步:通过委托告诉编译器,这个函数指针的类型是什么样子的:
    delegate int OnCheckHandler(int a, string b);
    第二步:声明一个指针:
    event OnCheckHandler CheckEvent;

    以上两步相当于C++中的:
    int (CheckEvent*)(int a, string b);

    第三步:设置指针的值:
    int OnChecked(int x, string y)
    {
      // ...
      return 0;
    }
    CheckEvent = new OnCheckHandler(OnChecked);

    这步相当于C++中的
    CheckEvent = OnChecked;

    其中OnChecked是函数OnChecked的起始地址。当程序运行到CheckEvent后,就会跳转到OnChecked地址所代表的函数中了。

  • 相关阅读:
    POJ 1364 King (差分约束系统)
    COJ 1086: 超市购物 (背包问题)
    OpenGL 视图和颜色的概念
    OpenGL 位图和图像概念
    OpenGL 状态管理和绘制几何体
    java jni和android java ndk
    android ndk(2)
    effective c++ 跨编译单元之初始化次序 笔记
    OpenGL 帧缓冲区
    c++ 自动对象、静态局部对象和内联函数
  • 原文地址:https://www.cnblogs.com/admin11/p/1099065.html
Copyright © 2011-2022 走看看