using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication1
{
delegate void DelegateGreet(string name); //声明委托类型
class Lamda
{
public static void EnglishGreet(string name)
{
Console.WriteLine("GoodMorning!" + name);
} static void Main(string[] args)
{
DelegateGreet dele1 = Lamda.EnglishGreet; //创建委托变量 并对其进行赋值
dele1("jack"); //调用委托方法 /*.net2.0提出的匿名方法对委托进行简化
这种方式和上面的方法的最大区别就是不用去再去创建委托变量 赋值
匿名方法就不需要写上面的东西
*/
DelegateGreet dele2 = delegate(string name)
{
Console.WriteLine("GoodMorning!" + name);
};
dele2("jack"); /*.net3.5提出的Lamda表达式对委托方法再次简化
Lamda 表达式 就是匿名方法 只是语法不同
*
* (param) =>expr param是输入参数列表 expr是一个表达式或者一系列语法 */
DelegateGreet dele3 = (name1) => { Console.WriteLine("GoodMorning!" + name1); }; //圆括号里 如果是一个参数,可以省略括号,参数类型可写可不写
dele3("jack");
/*
* 声明一个委托类型时候,无非就是返回值类型和参数类型不同
* 在.net3.5 中提供了两个专门简化委托的泛型方法
* Action没有参数,Action<>有参数 都不具有返回值
* Func,Func<>
* 其实上面两种那个泛型 的委托都是 系统已经给你定义好了 你直接用而已
* 用以再次简化委托
* 其实
*/
//Action<>可以加载至多16个参数,然后这样做的好处就是自己不用事先去声明委托变量,很灵活方便
Action<string,int > dele4 = (name1,name2) => { Console.WriteLine("GoodMorning!" + name1+"你今年"+name2+"岁了"); };
dele4("jack",); //Func实例 没有参数 只有返回值
Func<string> dele5 = () => { return "没有参数只有返回值"; };// 因为只有返回值 可以把大括号去掉
Console.WriteLine(dele5()); Console.Read();
}
}
}

输出:

GoodMorning!jack
GoodMorning!jack
GoodMorning!jack
GoodMorning!jack你今年15岁了
没有参数只有返回值

C#委托 Lamda表达式的更多相关文章

  1. .net 委托 +lamda表达式

    1.委托与类同级 想当于定义了一个类型 如 delegate int Sum(int a, int b);// 在声明类之前声明 2.这里可以在类里写个函数 public int sumAB(int ...

  2. [.net 面向对象程序设计进阶] (5) Lamda表达式(一) 创建委托

    [.net 面向对象程序设计进阶] (5) Lamda表达式(一)  创建委托 本节导读: 通过学习Lambda表达式,学会创建委托和表达式目录树,深入了解Lambda的特性,让你的代码变的更加清晰. ...

  3. C#中委托,匿名函数,lamda表达式复习

    一.委托 1.就给类比较,类用class声明,委托用delegate声明. 2.委托要指向一个真正的方法. 3.委托的签名,要和指向的方法一样. //1.声明一个委托 public delegate ...

  4. 委托、Lambda表达式、事件系列03,从委托到Lamda表达式

    在"委托.Lambda表达式.事件系列02,什么时候该用委托"一文中,使用委托让代码简洁了不少. namespace ConsoleApplication2 { internal ...

  5. 委托、泛型委托、多播委托、匿名函数、lamda表达式、事件

    1.为什么要使用委托 将一个方法作为参数传递给另一个方法 2.委托概念 public delegate int 委托名(int a, int b); 声明一个委托类型,可以用访问修饰符修饰,deleg ...

  6. 解读ASP.NET 5 & MVC6系列(12):基于Lamda表达式的强类型Routing实现

    前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特性(Route和HttpXXX系列方法)来定义.本章,我们将 ...

  7. [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门

    [.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门 本节导读: 认识表达式树(Expression Tree),学习使用Lambda创建表达式树,解析表达式树. 学习 ...

  8. [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用

    [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...

  9. lamda表达式学习

    lamda表达式 “Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型. 格式:( 形参列表 ) => { 函数体 } 所有 Lambda 表达式 ...

随机推荐

  1. hdu 4627 水数学题

    最小公倍数最大,也就是尽量让2个数互质,所以把n除以2 从中间向两边找就够了,自己写几组数据就能发现规律. 注意longlong存 #include<cstdio> #include< ...

  2. ios应用view之间数据传递的方式

    对于不同的viewcontroller之间数据的共享和处理 采用代理的方式,子viewcontroller设计代理协议,并定义协议接口,父viewcontroller实现协议接口,实现子视图控制器退出 ...

  3. HA高可用的搭建

    HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务. 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务.常用 ...

  4. 改变页面选择文字颜色和背景颜色----selection伪元素

    div::selection{color:#fff;background: #E83E84;text-shadow:none}  

  5. ASP.NET通用权限组件实现一

    沙发(SF)通用权限验证组件 开篇 上一篇提到了通用权限的设计思路,根据设计思路一步一步的来实现一个相对通用的权限验证组件.在VS2010下用C#语言基于.net framework2.0框架实现具体 ...

  6. js判断是否安装flash

    <script type="text/javascript"> (function () { var noFlash = "你的浏览器没有安装Flash,会影 ...

  7. 在Red Hat Enterprise Linux 5 64-bit安装oracle11g r2

    网上这种文档一搜就一堆,没别的目的,刚接触oracle为了加深理解记忆.只要是跟我的版本一样操作系统和oracle软件,按照步骤肯定可以成功安装 在虚拟机上安装Red Hat Enterprise L ...

  8. <转>让SVN用户能够修改自身密码的PHP页面

    1.修改Apache配置文件因为我在安装和配置SVN的时候,对Apache的配置文件进行过优化,将所有关于SVN的配置都写在了/opt/apache2/conf/extra/httpd-svn.con ...

  9. 沼跃鱼早已看穿了一切 C/C++

      沼跃鱼早已看穿了一切 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 593  Solved: 229[Submit][Status][Web Boa ...

  10. [Oracle]查看和修改连接数

    #登陆数据库sqlplus system/*** as sysdba #显示当前最大连接数:show parameter processes; show parameter sessions; #修改 ...