ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Lambda表达式:匿名方法的浓咖啡

Lambda表达式:匿名方法的浓咖啡

原创 Linux操作系统 作者:youli_113 时间:2008-01-15 14:39:58 0 删除 编辑
C# 1.X允许你在方法里写代码段,你可以轻松的使用委托(delegate)来调用。委托无疑是有用的,并且可以在框架里任意使用,但是在很多实例里你必须为了使用它而声明一个方法或者一个类。因此,为了给你一个更加容易和简洁的编码方式,C# 2.0允许你使用匿名方法替换标准调用到委托。如下代码可以在.NET1.1或者更早的版本看到:

class Program
{
 delegate void DemoDelegate();
 static void Main(string[] args)
 {
  DemoDelegate myDelegate = new DemoDelegate(SayHi);
  myDelegate();
 }
 void SayHi()
 {
  Console.Writeline("Hiya!!") ;
 }
}

  在C# 2.0,使用匿名方法,你必须这样重写代码:

class Program
{
 delegate void DemoDelegate();
 static void Main(string[] args)
 {
  DemoDelegate myDelegate = delegate()
  {
   Console.Writeline("Hiya!!");
  };
  myDelegate();
 }
}

  尽管匿名方法对基于方法的委托调用更进了一步,但是Lambda表达式允许你用更加简洁,功能性的格式写匿名方法。

  你可以将Lambda表达式作为一个参数列表来编写代码,跟在=>后面,再跟上一个表达式或者语句。以上的代码可以用如下的代码替换:

class Program
{
 delegate void DemoDelegate();
 static void Main(string[] args)
 {
  DemoDelegate myDelegate = () => Console.WriteLine("Hiya!!") ;
  myDelegate();
 }
}

  尽管Lambda表达式显得更加简洁,实际上他们也是一个匿名方法的功能性超集。特别的,Lambda表达式提供了如下的额外的功能:

  ·它们允许参数类型是被推断的。匿名方法要求你必须清楚的陈述每个类型的状态。

  ·它们可以支持查询表达式或C#语句。

  ·它们可以被看作使用表达式树的数据。这是不能用匿名方法来做的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12641349/viewspace-145371/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Lambda表达式示例
请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    153
  • 访问量
    171676