首先看下面的数据集合:

},
            };

     如果想要从中找到id=1003的记录,我们可以利用泛型集合List的Find方法。由于此方法参数为一个Predicate代理,所以就产生了下面的代码:

;
        }

     想来这样也是可以达到目的的,但起始还可以简化代码:运用c# 2.0 的特性:匿名方法:

 e.name);

     用匿名方法简化了代码,替代了委托的定义。
    而在C#3.X中,我们还可以利用Lamdba表达式进一步优化代码,而其更简洁:

 e2.name);


注意:lamdba表达式: 参数列表(显示或者隐式)+“=》”+表达式

     上面的演变过程,我们通过反编译可以看到不管是匿名方法,还是lamdba表达式,编译器实际上为我们做了“生成相关代理”的动作,或者说其实际的执行还是通过代理实现的。而整个演变只不过是为开发者开发方便而进行的“前台”“改进”。   
     下面通过lamdba表达式在LINQ中的应用来说明这一点:

);
        }

     IL:

 
}


==========

    
      lamdba表达式代表一个内嵌的方法,(指向一个匿名的方法),可以传入任何接受delgegate型别的东西,大量用于LINQ中应用到任何匿名方法可以应用的场合,编译器会把lamdba表达式翻译成使用代理的匿名方法。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-03-05
  • 2021-10-08
  • 2021-09-23
  • 2022-01-04
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-15
  • 2022-12-23
  • 2021-12-04
  • 2021-12-12
相关资源
相似解决方案