C#基础之Lambda表达式用法实例教程

2021-04-25 14:55

阅读:821

标签:content   赋值   用法   ike   erro   size   实例   建表   share   

本文以实例形式介绍了C#中Lambda表达式的用法,分享给大家供大家参考之用。具体如下:

从委托的角度来看,Lambda表达式与匿名方法没有区别。在前面

一文中,我们使用了匿名方法来调用List的FindAll方法。从C# 3.0开始,在使用匿名方法的地方,完全可以用Lambda表达式来代替。Lambda表达式的定义方式为:“([参数列表]) => 表达式”。运算符“=>”是一种与赋值运算“=”具有相同优先级的右结合运算符,在英语里读作:“goes to”。

现在回过头来看我们的例子。下面的代码与之前

一文中的代码具有相同的效果:

class Program
{
 static void Main(string[] args)
 {
 List names = new List();
 names.Add("Sunny Chen");
 names.Add("Kitty Wang");
 names.Add("Sunny Crystal");
 List found = names.FindAll
  (
  // Lambda Expression Implementation
  name => name.StartsWith(
  "sunny",
  StringComparison.OrdinalIgnoreCase)
  );
 if (found != null)
 {
  foreach (string str in found)
  Console.WriteLine(str);
 }
 }
}

上面的Lambda Expression Implementation在效果上与匿名方法没有任何区别,“=>”左边的name定义了参数(当参数个数为1的时候,圆括号可以省略),“=>”右边定义执行体。由于C# 3.0编译器具有Type Inference的能力,参数类型与返回值都将由编译器通过上下文判定,因此与匿名方法不同,Lambda表达式的参数可以不给定参数类型。当所表示的匿名方法没有任何参数时,Lambda表达式也同样可以使用,只需在“=>”左边用一对圆括号表示即可。即:

() => Console.WriteLine("Hello!"); 

事实上,“Lambda表达式”这一词比较笼统,事实上“=>”运算符既可以表示Lambda表达式,也可以表示Lambda语句。Lambda语句由代码块组成,形式上很像匿名方法。请看下面的例子:

class Program
{
 static void Main(string[] args)
 {
 // Lambda 表达式
 Func dele1 = n => n > 10;
 // Lambda 语句
 Func dele2 = (int n) => { return n > 10; };
 Console.WriteLine(dele1(16));
 Console.WriteLine(dele1(8));
 }
}

两种定义方法同样可以正确地输出结果。请注意,当我们希望构建表达式树的时候,情况却完全不同了:

// ok
Expression> expr1 = n => n > 10;
// error: cannot converted to an expression tree
Expression> expr2 = (int n) => { return n > 10; };

由此可见,在构建表达式树的时候,不能用Lambda语句(带有代码语句的Lambda表达式),而应该使用Lambda表达式。从这里就可以看出匿名方法与Lambda表达式的区别了。

相信本文所述对大家C#程序设计的学习有一定的借鉴价值。

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  C#基础之Lambda表达式用法实例教程

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23545.html




相关内容

技术分享图片
C#获取HTML文本的第一张图片与截取内容摘要示例代码
技术分享图片
C#中使用XmlDocument类来创建和修改XML格式的数据文件
技术分享图片
C#实现用户自定义控件中嵌入自己的图标
技术分享图片
解析C#中的私有构造函数和静态构造函数

技术分享图片
C#实现TreeView节点拖拽的方法
技术分享图片
C#实现12306自动登录的方法
技术分享图片
C#推送信息到APNs的方法
技术分享图片
C#实现对文件进行加密解密的方法

C#基础之Lambda表达式用法实例教程

标签:content   赋值   用法   ike   erro   size   实例   建表   share   

原文地址:http://www.cnblogs.com/paobuke/p/7919819.html


评论


亲,登录后才可以留言!