Lambda表达式和匿名方法有哪些区别-创新互联

这篇文章主要为大家展示了“Lambda表达式和匿名方法有哪些区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Lambda表达式和匿名方法有哪些区别”这篇文章吧。

创新互联公司凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、网站制作、成都网站建设、网站优化、软件开发、网站改版等服务,在成都10余年的网站建设设计经验,为成都成百上千家中小型企业策划设计了网站。

其实,Lambda表达式和匿名方法没多大区别,它们根本就是一件事。要说唯一的区别就是:他们语法表现形式不同。Lambda 表达式是在语法方面的更进一步的进化,仅此而已。因此我们要了解Lambda表达式就应该同时也了解匿名方法。

下面先看一个简单的代码例子,分别用匿名方法和Lambda 表达式来实现对数组的搜索:

使用 .net 2.0 的匿名方法来搜索字符串数组中包含 a 的字符串数组

static void Main(string[] args)

{

string[] list = new string[] { "abc", "12", "java" };

string[] ll = Array.FindAll(list,

delegate(string s)

{

return s.IndexOf("a") >= 0;

}

);

foreach (string var in ll)

{

Console.WriteLine(var);

}

Console.ReadLine();

}

使用 .net 3.5 的Lambda表达式来搜索字符串数组中包含 a 的字符串数组

static void Main(string[] args)

{

string[] list = new string[] { "abc", "12", "java" };

string[] ll = Array.FindAll(list, s => (s.IndexOf("a") >= 0));

foreach (string var in ll)

{

Console.WriteLine(var);

}

Console.ReadLine();

}

从上述两个例子我们可以看出:

从代码书写角度,代码可读性角度来说:Lambda表达式 比匿名方法更简单了。

而 Lambda表达式 和 匿名方法都是干的同一件事情,让我们少写一个函数定义。函数的调用和函数的实现在一起完成了。

Lambda表达式的书写格式如下:

(参数列表) => 表达式或者语句块

其中:

参数个数:可以有多个参数,一个参数,或者无参数。

参数类型:可以隐式或者显式定义。

表达式或者语句块:这部分就是我们平常写函数的实现部分(函数体)。

一些Lambda表达式的书写范例:

有两个参数的 Lambda表达式例子:

注:别看比较复杂,LINQ中实际把 下述代码中的 delegate ,DoSomeThing 替你做了,所以你写代码的时候只需要写

vart = DoSomeThing(7, 8, (x, y) => x * y); 这么一行。

public delegate T HongJunGuoTest01(T t1, T t2);

class Program

{

private static T DoSomeThing(T t1,T t2,HongJunGuoTest01 match)

{

return match(t1, t2);

}

static void Main(string[] args)

{

var t = DoSomeThing(7, 8, (x, y) => x * y);

Console.WriteLine(t);

Console.ReadLine();

}

}

下面这些写法也是对的(你只需要修改Main函数中的代码,其他地方不需要动):

var t = DoSomeThing(7, 8, (int x, int y) => x * y);

var t = DoSomeThing("7", "8", ( x, y) => x + y);

或者我们写一个更复杂的: => 右边是一段语句块。

var t = DoSomeThing(7, 8, (x, y) => { if (x < 5) { return (x + 8) * y; } else { return y; } });

最前面的例子是一个参数的例子,我们就不举一个参数的例子了,下面举一个没有参数的例子:

public delegate void HongJunGuoTest02();

class Program

{

private static void DoSomeThing(HongJunGuoTest02 match)

{

match();

}

static void Main(string[] args)

{

DoSomeThing(() => Console.WriteLine("jajaja"));

Console.ReadLine();

}

}

以上是“Lambda表达式和匿名方法有哪些区别”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


当前文章:Lambda表达式和匿名方法有哪些区别-创新互联
地址分享:http://hbruida.cn/article/gcjdc.html