• c# in deep 之使用匿名方法的内联委托操作


      匿名方法允许我们指定一个内联委托的操作,为创建委托实例表达式的一部分。其可以对代码进行极度精简,当然可读性变得很差。下面看一个求平方根的例子。

        List<int> list = new List<int>();
               list.Add(4);
               list.Add(5);
               list.Add(15);
               list.Add(20);
               list.Add(49);
               list.ForEach(delegate(int x) { Console.WriteLine(Math.Sqrt(x)); });

      乍眼一看,会发现其没有什么可读性。若既想精简,又要保持可读性怎么办呢,我们可以取一个折中的办法,即不再坚持“大括号单独占一行”的规则,但仍要保留足够的空白。比如上例可以写成下面的格式:

        List<int> list = new List<int>();
                list.Add(4);
                list.Add(5);
                list.Add(15);
                list.Add(20);
                list.Add(49);
                list.ForEach(delegate(int x) {
                    Console.WriteLine(Math.Sqrt(x));
                });

      这样会使层次感更加清晰。下例展示了一个有返回值匿名方法的实例:

         Predicate<int> isEven = delegate(int x) { return x % 2 == 0; };
                Console.WriteLine(isEven(1));
                Console.WriteLine(isEven(4));
          这是一个判断整数是奇数还是偶数的例子。我们把匿名方法当做一个普通的方法来对待,并返回一个恰当的值。我们不需要在靠近参数类型的地方声明一个返回类型,编译器会尝试将匿名方法转换成委托类型,它只需检查是否所有可能的返回值都兼容于这个类型声明的返回类型。

    浮躁的人容易问:我到底该学什么;----别问,学就对了; 浮躁的人容易问:JS有钱途吗;----建议你去抢银行; 浮躁的人容易说:我要中文版!我英文不行!----不行?学呀! 浮躁的人分两种:只观望而不学的人;只学而不坚持的人; 浮躁的人永远不是一个高手。
  • 相关阅读:
    学习4412开发板gdb和gdbserver的调试
    S5P4418开发板android源码下uboot和内核缺省文件的配置
    IMX6开发板Qtopia2.2.0开发环境搭建以及编译镜像
    IMX6Q开发板LinuxQT挂载U盘及TF卡
    没有更好的,五种操作系统助力研发,IMX6开发板做得到
    iTOPiMX6UL开发板MiniLinuxCAN测试使用文档
    Exynos4412开发板网络同一网段
    分享几个4412开发板新录制的视频,不是VIP也能看
    itop4412开发版安卓系统卸载默认apk使用文档
    一个总经理的11个经典面试问题
  • 原文地址:https://www.cnblogs.com/xuekai-to-sharp/p/3340641.html
Copyright © 2020-2023  润新知