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在语法上不允许使用这种直接的方法。如果要传递方法,就必须把方法的细节包装在一种新类型的对象中,那就是委托。委托只是一种特殊的对象类型,起特殊之处在于,我们以前定义的所有对象都包含数据,而委托包含的只是方法的细节” 

  • 相关阅读:
    CSS3-给网页添加图片
    CSS3-margin,padding,border
    布局左固定右自适应
    Java-基础编程(螺旋矩阵&乘法表)
    Java IO流整理Rick
    Java-Eclipse插件开发学习笔记
    关于《程序语言-平台优越性》一文补充说明
    程序语言-平台优越性
    Understand RNN with TensorFlow in 7 Steps
    pandas mean 返回 inf
  • 原文地址:https://www.cnblogs.com/lwhkdash/p/2426738.html
Copyright © 2011-2022 走看看