zoukankan      html  css  js  c++  java
  • 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有钱途吗;----建议你去抢银行; 浮躁的人容易说:我要中文版!我英文不行!----不行?学呀! 浮躁的人分两种:只观望而不学的人;只学而不坚持的人; 浮躁的人永远不是一个高手。
  • 相关阅读:
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xb0 in position 279: illegal multibyte sequence
    fish-redux快速创建文件夹模板 FishReduxTemplate
    一个很好的banner组件
    Class类的特性(上)
    兼容安卓和ios实现一键复制内容到剪切板
    React组件,React和生命周期
    vue数据双向绑定原理
    javascript的Object对象的defineProperty和defineProperties
    javascript 判断数据类型
    原生http模块与使用express框架对比
  • 原文地址:https://www.cnblogs.com/xuekai-to-sharp/p/3340641.html
Copyright © 2011-2022 走看看