编写高质量代码改善C#程序的157个建议——建议150:使用匿名方法、Lambda表达式代替方法
2024-10-21 14:35:30
建议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个建议》陆敏技
最新文章
- Android Ormlite 学习笔记2 -- 主外键关系
- EntityFramework 7.0之初探【基于VS 2015】(十)
- Java程序员应该知道的10个调试技巧
- 数据结构One_Vector(向量的简单实现)
- Hibernate核心类用法-使用Transaction管理事务
- 一些as的配置
- 【POJ】3264 Balanced Lineup ——线段树 区间最值
- 经典SQL语句集锦
- java反射机制入门02
- CSS3秘笈:第二章
- GIT 查看 删除 添加远程库
- UE4使用UMG接口操作界面
- 一个AI产品经理怎么看AI的发展
- valueof toString
- Shell学习笔记一
- windows常用命令行整理
- [转]使用自定义HttpMessageConverter对返回内容进行加密
- 2018.12.21 Cmos- RF
- memcached内存管理机制分析
- MongoDB与c#(二)简单例子 使用1.7版本驱动