zoukankan      html  css  js  c++  java
  • 我所理解的委托

    一:为什么会有委托?为什么语法是这样? 

    在c,c++中,可以使用函数指针作为参数来实现C#中委托的功能,而实际上,应该这么说:c#中委托其实跟C,C++的实现方式一样,只不过委托是一个安全指针,而且更加优雅更加OOP。但为什么用delegate就更oop了呢?为什么不直接将一个函数(或者叫方法)名称当做参数传递到另一个函数(或者叫方法)内部呢?而且javascript中就是这样做的。例如开始一个线程可以这样写:

    Thread.Start(EntryPoint);

    这样多么方便啊?何必还用代理这么麻烦?

    来看《c#》高级编程中的解释:

    “实际上,这是一种很简单的方式,在一些语言如C,C++中使用的就是这种方式(在C和C++中参数EntryPoint是一个函数指针)。但这种直接的方法会导致一些问题,例如类型的安全性,而且在进行面向对象编程时,方法很少是孤立存在的,在调用前,通常需要与类实例相关联。而这种方法并没有考虑到这个问题。所以在.NET Framework在语法上不允许使用这种直接的方法。如果要传递方法,就必须把方法的细节包装在一种新类型的对象中,那就是委托。委托只是一种特殊的对象类型,起特殊之处在于,我们以前定义的所有对象都包含数据,而委托包含的只是方法的细节” 

  • 相关阅读:
    无刷电机控制基本原理
    SPI 串行Flash闪存W25Q128FV 的使用(STM32F407)_软件篇
    CAN总线简介
    RS-232串口特性
    PLSQL 安装教程
    JS 常用正则表达式备忘录
    JS数组去重
    Js中Map对象的使用
    JS操作字符串
    前端小技巧
  • 原文地址:https://www.cnblogs.com/lwhkdash/p/2426738.html
Copyright © 2011-2022 走看看