1. 委托是什么?

    (1) 从数据结构来讲,委托是和类一样是一种用户自定义类型

     (2) 从设计模式来讲,委托(类)提供了方法(对象)的抽象。概括的说:委托是方法的抽象。

  2. 委托类型的定义:

    委托是类型,就好像类是类型一样。与类一样,委托类型必须在被用来创建变量以及类型对象之前声明。

    委托类型声明:

      (1) 以deleagate关键字开头。

      (2)返回类型+委托类型名+参数列表。

  3. 声明委托变量

      wdd wdd1,wdd2;

  4. 初始化委托变量

    (1) 使用new运算符

      new运算符的操作数的组成如下:

    • 委托类型名
    • 一组圆括号,其中包含作为调用列表中的第一个成员的方法的名字。方法可以是实例方法或静态方法。
    • class Program
          {
              delegate int delA(int i,int j);

      static void Main(string[] args)
              {

      delA d = say;
                  Console.WriteLine(d(6,8));
                  Console.ReadKey();
              }
              public static int say(int y,int z)
              {         
                  return y + z;
              }

      }

  6. 组合委托

委托可以使用额外的运算符来组合。这个运算最终会创建一个新的委托,其调用列表是两个操作数的委托调用列表的副本的连接。委托是恒定的,

  操作数委托创建后不会被改变。委托组合拷贝的是操作数的副本

    delA d = say;
            delA b = say;
            delA c = d + b;
            Console.WriteLine(c(d(1,2),b(1,3)));

  7. 委托加减运算

    可以使用+=运算符,为委托新增方法。

    同样可以使用-=运算符,为委托移除方法。

  8. 委托调用

    委托调用跟方法调用类似。委托调用后,调用列表的每个方法将会被执行。

    在调用委托前,应判断委托是否为空。调用空委托会抛出异常。

  9. 匿名方法

    匿名方法是在初始化委托时内联声明的方法。

    从上面我们可以看到,匿名方法是不会显示声明返回值的

  10. Lambda表达式

    Lambda表达式主要用来简化匿名方法的语法。在匿名方法中,delegate关键字有点多余,因为编译器已经知道我们将方法赋值给委托。

    通过几个简单步骤,我们就可以将匿名方法转换为Lambda表达式:

1.删除delegate关键字

2.在参数列表和匿名方法主体之间防Lambda运算符=>。Lambda运算符读作"goes to"。

C#,委托,匿名委托,Lambda表达式的更多相关文章

  1. 委托-异步调用-泛型委托-匿名方法-Lambda表达式-事件【转】

    1. 委托 From: http://www.cnblogs.com/daxnet/archive/2008/11/08/1687014.html 类是对象的抽象,而委托则可以看成是函数的抽象.一个委 ...

  2. C#多线程+委托+匿名方法+Lambda表达式

    线程 下面是百度写的: 定义英文:Thread每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段,它 ...

  3. (28)C#委托,匿名函数,lambda表达式,事件

    一.委托 委托是一种用于封装命名和匿名方法的引用类型. 把方法当参数,传给另一个方法(这么说好理解,但实际上方法不能当参数,传入的是委托类型),委托是一种引用类型,委托里包含很多方法的引用 创建的方法 ...

  4. C++实现委托机制(三)——lambda表达式封装

    C++.引言:              其实原本没打算写这一章的,不过最后想了想,嗯还是把lambda表达式也一并封装进去,让这个委托也适应lambda表达式的注册.不过在之前还是需要先了解lamb ...

  5. C# delegate event func action 匿名方法 lambda表达式

    delegate event action func 匿名方法 lambda表达式 delegate类似c++的函数指针,但是是类型安全的,可以指向多个函数, public delegate void ...

  6. 【Unity|C#】基础篇(9)——匿名函数 / Lambda表达式

    [学习资料] <C#图解教程>(第13章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...

  7. C#委托总结-匿名方法&Lambda表达式

    1,匿名方法 匿名方法可以在声明委托变量时初始化表达式,语法如下 之前写过这么一段代码: delegate void MyDel(string value); class Program { void ...

  8. 委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解

    1.使用简单委托 namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyB ...

  9. 18、(番外)匿名方法+lambda表达式

    概念了解: 1.什么是匿名委托(匿名方法的简单介绍.为什么要用匿名方法) 2.匿名方法的[拉姆达表达式]方法定义 3.匿名方法的调用(匿名方法的参数传递.使用过程中需要注意什么) 什么是匿名方法? 匿 ...

  10. 匿名函数 =匿名方法+ lambda 表达式

    匿名函数的定义和用途 匿名函数是一个"内联"语句或表达式,可在需要委托类型的任何地方使用. 可以使用匿名函数来初始化命名委托[无需取名字的委托],或传递命名委托(而不是命名委托类型 ...

随机推荐

  1. tomcat架构分析 (Session管理)

    Session管理是JavaEE容器比较重要的一部分,在app中也经常会用到.在开发app时,我们只是获取一个session,然后向session中存取数据,然后再销毁session.那么如何产生se ...

  2. 标签中id和name的作用和区别

    id:作为标签的唯一标识.name:作为可与服务器交互数据的HTML元素的服务器端的标示.

  3. unity游戏在logcat中过滤一些不需要的Log

    adb logcat | grep -v "UnityEngineDebug.cpp\|:\s*$" | grep Unity 意义: 1. grep -v "过滤条件1 ...

  4. 如何让CCLayer创造的地图,左右滑动不出现黑边

    在都是scale为1的情况下,效果图如下: , 绿色的是Screen,它的大小和坐标不变,可以理解为CCScene,下面两个就是用CCLayer的地图,有2个Layer,深颜色的就是和Scrren一样 ...

  5. Dynamics AX Hostory

    现在谈起Dynamics AX,在微软Dynamics系列产品当中,作为最受瞩目和最有前景的Dynamics套装产品线,很多人也许只知道它曾经由于资本市场的上市和并购,前后经历了三个“东家”.对于它长 ...

  6. JS传参中文乱码

    在传参的时候给中文参数加上两个encodeURI即可,类似这样: encodeURI(encodeURI(balanceUnit)) 写法二 escape(encodeURI(tmplItem.hyz ...

  7. Java反射机制DOME

    Java反射机制 public class TestHibernate { @Test public void TestHb(){ try { Class cs = Class.forName(&qu ...

  8. php命名空间和autoload

    参考: 1.http://www.cnblogs.com/thinksasa/p/3423480.html  PHP的命名空间 2.http://blog.jjonline.cn/phptech/15 ...

  9. treeview_dropdown_control

    http://www.brad-smith.info/blog/archives/193 http://www.brad-smith.info/blog/projects/dropdown-contr ...

  10. backup1

    string _imgpath1 = WebConfigurationManager.AppSettings["IMGPATH1"].ToString(); string outp ...