码迷,mamicode.com
首页 > Windows程序 > 详细

C#lambda表达式记录点滴

时间:2016-07-07 00:48:44      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

基础,你是高手,就请飘走。。。。。。。

平时做项目写代码很少用lambda表达式,特此补充一下,记录下来。

1 什么是lambda表达式?

msdn说法:使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数

乍一看,真的有点不舒服,语文没学好!!!那是机器翻译的,吼吼。。。。。。。。。。。。。

举个例子呗

lambda表达式   x=>x*x            输入x,输出x*x

如果有这样一个方法:

 1 public int getX2(int x){return x*x;} 

注意了,是有差别的,表达式怎么可能跟方法一样呢?

C#中有把方法当做参数进行传递!是的,那就是委托。例如:

1 delegate int del(int i);   
2 static void Main(string[] args)
3 {
4     del myDelegate = x => x * x;
5     int j = myDelegate(5); //j = 25
6 }

 

 

2 lambda 类型

表达式 lambda

表达式位于 => 运算符右侧的 lambda 表达式称为“表达式 lambda”。 表达式 lambda 会返回表达式的结果,并采用以下基本形式:

(input parameters) => expression

看例子:

 static void Main(string[] args)
        {
            int x = 5, y = 6;
            Func<int, int, int> f = ((x1, y1) => x1 + y1);          
            Console.WriteLine(f(x,y).ToString() );
            Console.Read(); 
        }

结果多少?     11

Func是一种泛型委托,一般都带有返回值。

语句 lambda 与表达式 lambda 表达式类似,只是语句括在大括号中:

  1 (input parameters) => {statement;} 

如:

1  static void Main(string[] args)
2         {
3             Action<string> f = (x) => { Console.WriteLine(x); };
4             f("hello,world");
5             Console.Read();
6         }

 

其中:Action是.NET内部提供的一个无返回值、泛型的委托。

结构如下:

1 delegate void Action();
2 delegate void Action<in T>(T obj);
3 delegate void Action<in T,in T1>(T obj,T1 obj1);
4 delegate void Action<in T,in T1,in T2>(T obj,T1 obj1,T2 obj2);
.......

 

就写到这里吧。

 

C#lambda表达式记录点滴

标签:

原文地址:http://www.cnblogs.com/jiahuo/p/5648415.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!