C#中委托,匿名函数,lamda表达式复习
一、委托
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表达式复习的更多相关文章
- (28)C#委托,匿名函数,lambda表达式,事件
一.委托 委托是一种用于封装命名和匿名方法的引用类型. 把方法当参数,传给另一个方法(这么说好理解,但实际上方法不能当参数,传入的是委托类型),委托是一种引用类型,委托里包含很多方法的引用 创建的方法 ...
- Qt中使用匿名函数lambda表达式
一.为什么要使用匿名函数lamdba 首先,lambda表达式可以使代码变得简单,C++中,一个lambda表达式表示一个可调用的代码单元.如代码: #include <QCoreApplica ...
- python 中的匿名函数lamda和functools模块
为什么 要把匿名函数和functools模块写在一起? 因为 lamda函数和functools模块都是对函数一种增强或者是简化. 匿名函数: 为了解决那些功能很简单的需求而设计一次性的需求函数 #& ...
- 【C#】委托中的匿名函数与lambda
将方法作为方法的参数 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使 ...
- c#中匿名函数lamb表达式
c#中匿名函数lamb表达式 实例一:(其实,这样都是些语法糖) using System; using System.Collections.Generic; using System.Linq; ...
- 【Unity|C#】基础篇(9)——匿名函数 / Lambda表达式
[学习资料] <C#图解教程>(第13章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu. ...
- jquery'中的匿名函数
//jquery'中的匿名函数 (function(){ alert("this is a test"); })(); //和这个基于jQuery的比较下: $(funct ...
- php中的匿名函数和闭包(closure)
一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数.最常用的就是回调函 ...
- php中的匿名函数(Anonymous functions)和闭包函数(closures)
一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数.最常用的就是回调函 ...
- js中的匿名函数和匿名自执行函数
1.匿名函数的常见场景 js中的匿名函数是一种很常见的函数类型,比较常见的场景: <input type="button" value="点击" id ...
随机推荐
- IDEA实用插件Lombok
Lombok Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法.通常,我们所定义的对象和be ...
- 如何在HTTP客户端与服务器端之间保持状态(转)
HTTP协议与状态保持 HTTP协议本身是无状态的,这与HTTP协议本来的目的是相符的,客户端只需要简单的向服务器请求下载某些文件,无论是客户端还是服务器都没有必要纪录彼此过去的行为,每一次请求之间都 ...
- linux 命令之netstat
转自:http://www.maomao365.com/?p=699 linux 命令之netstat 在linux中netstat命令的作用是查看TCP/IP网络当前所开放端口,所对应的本地和外地端 ...
- a标签的使用
a标签可以用来跳转页面请求路径,也可以用来绑定事件. 在绑定事件的时候,我需要控制a标签,不让他进行跳转. 这时候我要做的就是限制他,不让他跳转. 只需要在href属性中加入javascript:vo ...
- Hello Flask
Hello Flask Flask简介 Flask是一个使用Python编写的轻量级Web应用框架.基于Werkzeug WSGI工具箱和Jinja2 模板引擎.Flask使用BSD授权.Flask被 ...
- Java入门(二):注释和基本数据类型
上次通过eclipse在控制台输出了hello world,是不是有点小激动啊,今天接着介绍Java基础知识. 一.Java注释 1.Java注释语句不会被编译器运行,不用担心代码因为许多注释语句显得 ...
- E - Intervals 贪心
Chiaki has n intervals and the i-th of them is [li, ri]. She wants to delete some intervals so that ...
- B - Moo Volume
Farmer John has received a noise complaint from his neighbor, Farmer Bob, stating that his cows are ...
- django ORM的总结
1.django分表的方案: https://mp.weixin.qq.com/s?__biz=MjM5NjA3Nzk3Ng==&mid=2648154502&idx=1& ...
- Problem UVA11134-Fabled Rooks(贪心)
Problem UVA11134-Fabled Rooks Accept: 716 Submit: 6134Time Limit: 3000mSec Problem Description We w ...