标签:tor 数列 语句块 作用 声明 enum 表示 产生 类类型
4.1迭代器块
迭代器块就是产生值的有序序列的语句块,迭代器块通过一个/多个yield语句区别于常规语句:
-yield return 语句产生迭代的下一个值
-yield break 语句指明迭代完成
迭代器块可以用做一个方法体、运算符体、访问器体,前提是对应函数成员的返回类型是枚举器接口之一/可枚举接口之一。
迭代器块在C#语法中不是独特的元素,它们在几个方面受限制,并且主要作用在函数成员声明的语义上,它们在语法上只是语句块而已。当一个函数成员使用迭代器块实现时,该函数成员的正式参数列表指定任何ref/out参数都将导致编译时错误;return出现在迭代器块中也会导致编译时错误,但yield return语句是允许的;在迭代器块中包含不安全上下文也会导致编译时错误,即便迭代器声明在不安全上下文中,迭代器块总是定义为一个安全上下文。
4.1.1 枚举器接口
枚举器接口是System.Collections.IEnumerator接口和System.Collections.Generic.IEnumerator<T>的所有实例。
4.1.2 可枚举接口
可枚举接口是System.Collections.IEnumerable接口和System.Collections.Generic.IEnumerable<T>的所有实例。
4.1.3 yield类型
迭代器块生成具有相同类型的所有值的序列。该类型被称为迭代器块的yield类型:
-通常用于实现返回IEnumerator/IEnumerable的函数成员的迭代器块的yield类型是object;
-通常用于实现返回IEnumerator<T>/IEnumerable<T>的函数成员的迭代器块的yield类型是T。
4.1.4 this访问
在类的实例成员的迭代器块内,this表达式是值,该值的类型是类类型。在这个类型内可以采用这种用法,这个值就是成员被调用时对对象的引用。
在结构的实例成员的迭代器块内,this表达式被当作一个变量,该变量的类型就是结构类型。在这个结构内它可以采用这种用法,该变量表示一个成员被调用时的对应结构的一个拷贝。在结构实例成员的迭代器块内,this变量的行为就好像是结构类型的一个值参数。
4.2枚举对象
发
标签:tor 数列 语句块 作用 声明 enum 表示 产生 类类型
原文地址:https://www.cnblogs.com/dreamoffire/p/10192922.html