zoukankan      html  css  js  c++  java
  • 编写高质量代码改善C#程序的157个建议——建议150:使用匿名方法、Lambda表达式代替方法

    建议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 == 5;
            }

     上面的代码中,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 == 5; });
                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 == 5);
                Console.WriteLine(mike);
            }

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

  • 相关阅读:
    你是怎么把字符串“2016-11-16” 变为 “16/11/2016” 的?
    js-------》(小效果)实现倒计时及时间对象
    Ruby方法
    JAVASCRIPT事件详解-------原生事件基础....
    html5的小知识点小集合
    原生js实现的效果
    IDEA 实用功能Auto Import:自动优化导包(自动删除、导入包)
    8.SpringBoot 模板引擎 Thymeleaf
    7.SpringBoot 之 Web
    6.日志的使用
  • 原文地址:https://www.cnblogs.com/jesselzj/p/4753772.html
Copyright © 2011-2022 走看看