一、委托

1.就给类比较,类用class声明,委托用delegate声明。

   2.委托要指向一个真正的方法。

3.委托的签名,要和指向的方法一样。

     //1.声明一个委托
public delegate void DelSayHi(string name); public static void SayHiChinese(string name)
{
Console.WriteLine("你好?" + name);
}
public static void SayHiEnglish(string name)
{
Console.WriteLine("Nice to meet you" + name);
} static void Main(string[] args)
{
//2.实例化委托,指向一个方法
DelSayHi del = new DelSayHi(SayHiChinese);
//DelSayHi del =SayHiChinese;写法二 //调用
del("张三");
}

这种写法,可能会有疑问,还不如直接去调用了。且往下边继续看。

       //1.声明一个委托
public delegate void DelSayHi(string name);
static void Main(string[] args)
{ //2.指向方法
Test("张三", SayHiChinese);
Test("TOM", SayHiEnglish);
} public static void Test(string name,DelSayHi del)
{
//3.调用
del(name);
} public static void SayHiChinese(string name)
{
Console.WriteLine("你好?" + name);
}
public static void SayHiEnglish(string name)
{
Console.WriteLine("Nice to meet you" + name);
}

这一次,我中间又封装了一个方法,这次将方法当成一个参数传到另一个方法里。记得刚开始接触委托时,就是成天鼓捣这句话。

二、匿名函数

按上面的写法,假如说,我只会用到这个方法一次,那么有没有更简洁的写法。答案是有。

  public delegate void DelSayHi(string name);

        static void Main(string[] args)
{
DelSayHi del = delegate (string name) //匿名函数
{
Console.WriteLine("你好" + name);
};
del("张三");
}

这种写法叫做匿名函数。

三、lamda表达式

其实还有更简单的写法

  public delegate void DelSayHi(string name);

        static void Main(string[] args)
{
DelSayHi del = DelSayHi del = (string name) => { Console.WriteLine("你好" + name); }; //lamada表达式
del("张三");
}

这种写法就是lamda表达式。

其实匿名函数和lamda都是委托。

C#中委托,匿名函数,lamda表达式复习的更多相关文章

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

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

  2. Qt中使用匿名函数lambda表达式

    一.为什么要使用匿名函数lamdba 首先,lambda表达式可以使代码变得简单,C++中,一个lambda表达式表示一个可调用的代码单元.如代码: #include <QCoreApplica ...

  3. python 中的匿名函数lamda和functools模块

    为什么 要把匿名函数和functools模块写在一起? 因为 lamda函数和functools模块都是对函数一种增强或者是简化. 匿名函数: 为了解决那些功能很简单的需求而设计一次性的需求函数 #& ...

  4. 【C#】委托中的匿名函数与lambda

    将方法作为方法的参数 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使 ...

  5. c#中匿名函数lamb表达式

    c#中匿名函数lamb表达式 实例一:(其实,这样都是些语法糖) using System; using System.Collections.Generic; using System.Linq; ...

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

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

  7. jquery'中的匿名函数

        //jquery'中的匿名函数 (function(){ alert("this is a test"); })(); //和这个基于jQuery的比较下: $(funct ...

  8. php中的匿名函数和闭包(closure)

    一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数.最常用的就是回调函 ...

  9. php中的匿名函数(Anonymous functions)和闭包函数(closures)

    一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数.最常用的就是回调函 ...

  10. js中的匿名函数和匿名自执行函数

    1.匿名函数的常见场景 js中的匿名函数是一种很常见的函数类型,比较常见的场景:   <input type="button" value="点击" id ...

随机推荐

  1. Linux中对逻辑卷的移除

    移除前先df -mT 看一下:(在上一篇的基础上:Linux中对逻辑卷进行扩容) 1.取消挂载同时删除/etc/fstab下的记录 取消挂载 umount /dev/zhi/lv-zhi 删除记录 v ...

  2. Eclipse启动时发生An internal error occurred duri ng: "Initializing Java Tooling ----网上的坑爹的一个方法

    补充一下: 上面的方法不行. 我的个人解决方法 出现这种问题的原因,我的是eclipse换了,工作目录还是用之前的那个 把build Automatically的钩去掉 假设我们是用之前的worksp ...

  3. Java的sql动态参数

    在C#的方法中可以使用params Parameter[] values来动态获取sql语句中的参数值数组.Java中可以自己封装出一个类似于C#的方法 1.获取结果集 /** * 获取结果集 * @ ...

  4. Linux 小知识翻译 - 「代理服务器」

    这回聊聊「代理服务器」. 在公司里,不通过代理服务器无法连接互联网的,由于代理服务器的原因,有些服务的使用是受到限制的. 有人可能会觉得为什么会存在这种东西?(这里指代理服务器) Proxy本来的意思 ...

  5. June 12. 2018 Week 24th. Tuesday

    Just be yourself because you are unique and you will shine. 每个人都是独一无二的,做好你自己,你也能够光芒四射. From What a G ...

  6. Spring的AOP开发的相关术语

    转载自 https://www.cnblogs.com/ltfxy/p/9873618.html SpringAOP简介: AOP思想最早是由AOP联盟组织提出的.Spring使用这种思想最好的框架. ...

  7. Windows10反安装报错error code 2502 2503

    先找系统TEMP目录,一般为C:\windows\temp,打开这个目录的权限,为这个目录中的User用户添加权限为完全控制,现在再反安装就不会报错了. 注:原因就是因为系统运行时需要用到临时文件的目 ...

  8. 获取WebApplicationContext的几种方式

    加载WebApplicationContext的方式 WebApplicationContext是ApplicationContext的子接口,纵观Spring框架的几种容器,BeanFactory作 ...

  9. nuxt拦截IE浏览器

    需求场景 判断浏览器类型,让譬如IE的低版本浏览器跳转到指定提示浏览器升级页面. 难点分析 使用过的都知道,nuxt没有暴露主入口页面也就是index.html啊,我们以前常用的IE条件判断没地方写. ...

  10. python 逻辑判断 循环练习题

    # 1.判断下列列逻辑语句句的True,False.# 1)1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 ...