zoukankan      html  css  js  c++  java
  • C#编程语言二:委托 Lambda表达式 事件

      委托是寻址的.NET版本,在C++中,函数指针只不过是内存位置的指针,它不是类型安全

    的。我们无法判断这个指针实际指向什么,像参数和返回类型等项更就无从知晓了

      而委托是类型安全的类,它定义了返回类型和参数类型,委托类不仅包含对方法的引用,也可

    以包含对多个方法的引用。

      Lambda表达式与委托直接相关,当参数是委托类型时,就可以使用Lambda表达式实现委托

    引用的方法。

      如果要传递方法,就必须要把方法的细节封装在一种新类型的对象中,即委托,委托只是一种

    特殊的对象,其特殊之处在于,我们以前定义的所有对象都包含数据,而委托包含的只是一个或多

    个方法的地址。

     

      用法:分两个阶段  

      deledate string GetAString( );

      定义了一个委托GetAString,并指定该委托的每个实例都可以包含一个方法的引用,该方法

    无参数,并返回string,理解委托的一个要点是它们的类型安全性非常高,在定义委托时,必须给

    出它所表示的方法的签名和返回类型等全部细节;

      实际上,定义一个委托是指定义一个新类,委托实现为派生自基类

    System.MulticastDelegate的类,System.MulticastDelegate又派生自基类

    System.Delegate。

      定义好委托后,就可以创建一个实例,从而用它存储特定的方法的细节。

      int  x = 40;

      GetAString str = new GetAString(x.ToString);

      Console.WriteLine(GetAString());

    或者 GetAString.Invoke();

      为了减少输入量,只要需要委托实例,就可以只传送地址的名称,这称为委托推断;

        GetAString str = new GetAString(x.ToString);

    等价于:GetAString str = x.ToString;

      

      

  • 相关阅读:
    二分法
    The Distinguish of the share or static lib in MFC
    内部或外部命令
    The Memory Managerment of the Computer
    AfxWinInit
    NoSQL解决方案比较
    修改服务中可执行文件的路径
    MapReduce 笔记
    认识MongoDB
    Add a Console Application
  • 原文地址:https://www.cnblogs.com/gengyuanchao/p/2750307.html
Copyright © 2011-2022 走看看