• 枚举器


    1、可枚举的类型必须实现IEnumerable和IEnumerator接口
    2、枚举器实现了IEnumerator接口,它迭代Object类型,会有如下问题
      1、值类型的装箱和取消装箱操作降低了性能
      2、向下类型转换(从父类型到子类型)到引用类型也要付出少量的性能代价
      3、频繁的装箱操作会使托管堆空间紧张
      4、大型值类型集合的装箱也会使托管堆空间紧张
      5、需要与System.Object之间的类型转换,这并非是类型完全安全的
    3、迭代器
      yield语句
      语法:yield return expresssion  yield break
      迭代器块
      迭代器块是维护迭代之间的枚举器的状态机
      事件处理程序、构造函数和析构函数不能成为迭代器
      迭代器块不能再匿名方法中使用,迭代器块不能包含在一个带有catch处理程序的try块中
      迭代器块不能放在一个finally块中
      迭代器函数的限制
      迭代器方法必须返回一个IEnumerable或一个IEnumerator接口
      迭代器方法不能有ref参数
      迭代器方法不能有out参数
      迭代器方法不能是不安全的
      迭代器的本质
      C#编译器将迭代器实现为嵌套类,该嵌套类维护当前枚举数的状态
      迭代器是由语言编译器创建的,而不是由公共语言运行时(CLR)创建的
      迭代器实例
      双重迭代
      反向迭代
      临时集合
      复杂迭代
      

  • 相关阅读:
    Django实战(4):scaffold生成物分析
    Django实战(3):Django也可以有scaffold
    创建第一个模型类
    1. 实战系列的开发目标
    Django第一步
    URLconf+MTV:Django眼中的MVC
    mp4文件格式解析
    傅里叶分析之掐死教程(完整版)更新于2014.06.06
    关于Spinlock机制的一点思考
    spinlock变量没有初始化
  • 原文地址:https://www.cnblogs.com/changweihua/p/2174408.html
Copyright © 2020-2023  润新知