建议150:使用匿名方法、Lambda表达式代替方法

方法体如果过小(如小于3行),专门为此定义一个方法就会显得过于繁琐。比如:

        static void SampeMethod()
{
List<string> list=new List<string>(){"Mike","Rose","Steve"};
var mike = list.Find(new Predicate<string>(HaveLengthFive));
Console.WriteLine(mike);
} static bool HaveLengthFive(string value)
{
return value.Length == ;
}

上面的代码中,SampleMethod方法需要完成的功能是查看list中有没有长度等于5的元素。Predicate是一个委托,它接收元素值,并返回元素是否符合要求这一结果。而真正工作的代码只有1行。有些繁琐,所以要重构:

        static void SampeMethod()
{
List<string> list=new List<string>(){"Mike","Rose","Steve"};
var mike = list.Find(delegate(string value) { return value.Length == ; });
Console.WriteLine(mike);
}

由delegate引领的语句就是一个匿名方法。其次,匿名方法经过编译器编译之后,就和普通方法没有任何区别了。匿名方法带来的只是简化程序员的部分工作而已。

更好的简化方法就是Lambda表达式。Lambda表达式有符号“=>”连接(读作“goes to”),符号左边是参数列表,右边是方法体。Lambda表达式更进一步简化了匿名方法的语法:

        static void SampeMethod()
{
List<string> list=new List<string>(){"Mike","Rose","Steve"};
var mike = list.Find(value => value.Length == );
Console.WriteLine(mike);
}

转自:《编写高质量代码改善C#程序的157个建议》陆敏技

最新文章

  1. Android Ormlite 学习笔记2 -- 主外键关系
  2. EntityFramework 7.0之初探【基于VS 2015】(十)
  3. Java程序员应该知道的10个调试技巧
  4. 数据结构One_Vector(向量的简单实现)
  5. Hibernate核心类用法-使用Transaction管理事务
  6. 一些as的配置
  7. 【POJ】3264 Balanced Lineup ——线段树 区间最值
  8. 经典SQL语句集锦
  9. java反射机制入门02
  10. CSS3秘笈:第二章
  11. GIT 查看 删除 添加远程库
  12. UE4使用UMG接口操作界面
  13. 一个AI产品经理怎么看AI的发展
  14. valueof toString
  15. Shell学习笔记一
  16. windows常用命令行整理
  17. [转]使用自定义HttpMessageConverter对返回内容进行加密
  18. 2018.12.21 Cmos- RF
  19. memcached内存管理机制分析
  20. MongoDB与c#(二)简单例子 使用1.7版本驱动

热门文章

  1. 使用mysql-connector-java出现的错误
  2. 【BZOJ】2160: 拉拉队排练(Manacher)
  3. JAVA构造函数在超类和子类调用注意事项
  4. mac 更改初始密码
  5. scrapy框架的持久化存储
  6. 咱妈说别乱点链接之浅谈CSRF攻击
  7. 教你用一行Python代码实现并行(转)
  8. django -- url (模版语言{{ request.path_info }})
  9. MYSQL的随机查询的实现方法
  10. java算法 第七届 蓝桥杯B组(题+答案) 2.生日蜡烛