一、委托

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. [20190401]关于semtimedop函数调用.txt

    [20190401]关于semtimedop函数调用.txt --//上个星期测试,链接http://blog.itpub.net/267265/viewspace-2639675/--//关于sql ...

  2. 洗礼灵魂,修炼python(69)--爬虫篇—番外篇之feedparser模块

    feedparser模块 1.简介 feedparser是一个Python的Feed解析库,可以处理RSS ,CDF,Atom .使用它我们可从任何 RSS 或 Atom 订阅源得到标题.链接和文章的 ...

  3. SQL的日期转换

    日期转会计期 SUBSTRING(CONVERT(VARCHAR,getdate(), 20), 1, 7)   2015-06 SUBSTRING(CONVERT(VARCHAR,DATEADD(m ...

  4. c/c++ 深拷贝

    解决上一篇浅拷贝的问题 浅拷贝的问题根源是,类里有指针类型的成员变量,所以需要自己编写拷贝构造函数和重载=函数 #include <iostream> #include <strin ...

  5. supervusor常遇到的问题

    1.unix:///tmp/supervisor.sock refused connection supervisord -c /etc/supervisord.conf  2.Unlinking s ...

  6. 设计模式のFilterPattern(过滤器模式)----结构模式

    一.产生背景 我们有一堆“人”的对象,我们应该怎么选择出其中的男性.女性或者其他类型的呢?这时候我们可以用过滤器模式 二.通常做法 我们将创建一个 Person 对象.Criteria 接口和实现了该 ...

  7. 通过JS如何获取IP地址

    通过JS获取你真实的外网IP和内网IP,就算开代理也没有用,想想真是太可怕了,还能不能愉快的装逼了! 代码: //get the IP addresses associated with an acc ...

  8. UVA1646-Edge Case(递推+斐波那契数列)

    Problem UVA1646-Edge Case Time Limit: 3000 mSec Problem Description Input For each test case, you ge ...

  9. 一.html介绍

    一.html1.就是一个文本文档,写标记语言,由浏览器软件进行渲染得到想要的网页效果2.版本:h4,h5 二.常用的h5标签1.块状标签: p:段落 div:块 span:同行块 h1-h6:6级标题 ...

  10. 路由器安装Openwrt&&***

    路由器安装Openwrt&&*** 前言 对于给路由器刷系统,肯定是有风险的,敢于承担风险的才开始动手. Openwrt其实也是一款嵌入式Linux系统,对于闪存大小也是有一定的要求的 ...