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都是委托。

时间: 2024-10-29 22:10:57

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

c#中匿名函数lamb表达式

c#中匿名函数lamb表达式 实例一:(其实,这样都是些语法糖) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 { //c#中的匿名函数 //申明一委托 delegate void Del(); class Program { static void s

转:php中的匿名函数和闭包(closure)

一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数.最常用的就是回调函数的参数值.(http://php.net/manual/zh/functions.anonymous.php) 匿名函数的定义: $closureFunc = function(){ .... }; eg: 把匿名函数赋值给变量,通过变量来调用 $closureFunc = function($s

JavaScript中的匿名函数及函数的闭包以及作用域

1. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85

java学习中,匿名函数、构造方法、构造代码块、构造方法中调用构造方法(java 学习中的小记录)

java学习中,匿名函数.构造方法.构造代码块.构造方法中调用构造方法(java 学习中的小记录) 作者:王可利(Star·星星) 匿名函数 匿名对象:没有名字的对象 匿名对象使用的注意点: 1.一般不会用匿名对象给属性赋值,无法获取属性值,每次new 都是一个新的对象. 2.匿名对象永远都不可能是一个对象. 如:person new().name = "星星":是不行的 匿名对象的好处:书写简单. 匿名对象使用的场景: 1.如果一个对象调用一个方法一次的时候,就可以用匿名对象来调用.

jquery'中的匿名函数

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

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

一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数.最常用的就是回调函数的参数值.(http://php.net/manual/zh/functions.anonymous.php) 匿名函数的定义: $closureFunc = function(){ .... }; eg: 把匿名函数赋值给变量,通过变量来调用 $closureFunc = function($s

C++11中的匿名函数 lambda函数 lambda表达式

这篇文章是根据维基百科整理来的,原文请看:http://en.wikipedia.org/wiki/Anonymous_function#C.2B.2B C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下: [capture](parameters)->return-type{body} 如果没有参数,空的圆括号()可以省略.返回值也可以省略,如果函数体只由一条return语句组成或返回类型为void的话.形如:   [captur

委托-异步调用-泛型委托-匿名方法-Lambda表达式-事件

1. 委托 From: http://www.cnblogs.com/daxnet/archive/2008/11/08/1687014.html 类是对象的抽象,而委托则可以看成是函数的抽象.一个委托代表了具有相同参数列表和返回值的所有函数. [csharp] view plaincopy class Program { delegate int CalculateDelegate(int a, int b); int add(int a, int b) { return a + b; } s

JS中的匿名函数

整理自:http://www.cnblogs.com/playerlife/archive/2012/10/17/2727683.html 一.什么是匿名函数? 在Javascript定义一个函数一般有如下三种方式: ①:函数关键字(function)语句:function fnMethodName(x) { alert(x); } ②:函数字面量(Function Literals)var fnMethodName = function (x) { alert(x); } ③:Function