Ienumerable和Ienumerator的使用

using UnityEngine;
using System.Collections;

public class TestCoroutine : MonoBehaviour {
	void Start () {
		StartCoroutine (test());
		print ("_______________________________");
		TestIenumerator ();
		print ("_______________________________");
		TestIenumerable();
		print ("_______________________________");
	}
	void TestIenumerable(){
		IEnumerable t = a ();
		IEnumerator tp = t.GetEnumerator ();
		foreach(string k in t){
			print (k);
		}
	}
	void TestIenumerator(){
		IEnumerator e = YieldSomeStuff();
		while(e.MoveNext())
		{
			print(string.Format("while: {0}",e.Current));
		}
	}
	IEnumerator test(){
		print ("test");
//		yield break;
		yield return new WaitForSeconds(1);
		print ("test2");
	}
	IEnumerator YieldSomeStuff()
	{
		yield return new WaitForSeconds (1);
		print ("____________");
		yield return "hello";
		print ("____________");
		yield return "world";
		print ("____________");
	}
	IEnumerable a(){
		yield return "Tests";
		yield return "Tests";
		yield return "Tests";
	}
}

  

时间: 2024-08-18 03:56:59

Ienumerable和Ienumerator的使用的相关文章

IEnumerable和IEnumerator 详解

http://blog.csdn.net/byondocean/article/details/6871881 初学C#的时候,老是被IEnumerable.IEnumerator.ICollection等这样的接口弄的糊里糊涂,我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质. 下面我们先看IEnumerable和IEnumerator两个接口的语法定义.其实IEnumerable接口是非常的简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于

C# IEnumerable和IEnumerator的区别,如何实现

IEnumerable接口和IEnumerator接口是.NET中非常重要的接口,二者有何区别? 1. 简单来说IEnumerable是一个声明式的接口,声明实现该接口的类就是"可迭代的enumerable",但并没用说明如何实现迭代器(iterator).其代码实现为: public interface IEnumerable         {                IEnumerator GetEnumerator();          }    2. 而IEnumer

关于迭代器中IEnumerable与IEnumerator的区别

首先是IEnumerable与IEnumerator的定义: 1.IEnumerable接口允许使用foreach循环,包含GetEnumerator()方法,可以迭代集合中的项. 2.IEnumerator接口是一个真正的集合访问器,它包含MoveNext()方法和Current属性,在foreach循环中,如果MoveNext()返回True,则就是用IEnumerator接口的Current属性来获取对象的一个引用,用于foreach循环. 下面是自定义的一个迭代器的例子: Primer.

《转》IEnumerable、IEnumerator两个接口的认识

前言 IEnumerable.IEnumerator到现在为止对这两个接口还是不太理解,不理解但是自己总是想着试着要搞明白,毕竟自己用的少,所以在此先记录一下. 查看并使用两个接口 接下来我们先来看看两个接口的定义. 先来看一下IEnumerable接口,其实看过这个接口之后,发现它其实是非常的简单,只包含一个方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象,如下面截图所示: 这里的IEnumerator对象,其实就是另外一个接口,这个接口对象有什么呢

IList,ICollection,IEnumerable,IEnumerator,IQueryable

1.首先看一个简单的例子 int[] myArray = { 1, 32, 43, 343 }; IEnumerator myie = myArray.GetEnumerator(); myie.Reset(); while (myie.MoveNext()) { int i = (int)myie.Current; Console.WriteLine("Value: {0}", i); } 相信很多人都不会像上面这样去遍历myArray这个数组,通常我们这样会这样做 foreach

转载 IEnumerable和IEnumerator 详解

初学C#的时候,老是被IEnumerable.IEnumerator.ICollection等这样的接口弄的糊里糊涂,我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质. 下面我们先看IEnumerable和IEnumerator两个接口的语法定义.其实IEnumerable接口是非常的简单,只包含一个抽象的 方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象.IEnumerator对象有什么呢?它是一个真正的 集合访问器,没有

迭代器学习之一:使用IEnumerable和IEnumerator接口

写博客是检验我学习的成果之一以及自我总结的一种方式,以后会经常利用这种方式进行技术交流和自我总结,其中认识不深难免会有错误,但是一直懂得不懂就问,不懂就学的道理! 1.首先看一个简单的列子 1 int[] myArray = { 1, 32, 43, 343 }; 2 //很少这样写的 3 IEnumerator myie = myArray.GetEnumerator(); //获取需要遍历的枚举数 4 myie.Reset(); //重置 5 while (myie.MoveNext())

<转载>C#IEnumerable和IEnumerator 详解

初学C#的时候,老是被IEnumerable.IEnumerator.ICollection等这样的接口弄的糊里糊涂,我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质. 下面我们先看IEnumerable和IEnumerator两个接口的语法定义.其实IEnumerable接口是非常的简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象.IEnumerator对象有什么呢?它是一个真正的集合访问器,没有它,

【C#】 26. 关于IEnumerable和IEnumerator

终于把硕士所有的课业都完成了... 今天就写一点关于IEnumerator和IEnumerable这两个概念,之前写金融模型的时候用到过,当时也没太搞清楚,这两天看了C#in Depth,觉得里面解释的不错,虽然例子有点错误.所以今天就写一篇关于这两个概念的文章. 首先,我有一个先入为主的概念,IEnumerable就好比是一个数组类型.一想到数组,我们就能很轻而易举地联想到Foreach遍历的语法.那么问题是Foreach是怎么实现的呢?答案就是你调用Foreach的时候这个类似数组的IEnu

IEnumerable和IEnumerator接口

我们先思考几个问题:1.为什么在foreach中不能修改item的值?(IEnumerator的Current为只读)2.要实现foreach需要满足什么条件?(实现IEnumerator接口来实现的)3.为什么Linq to Object中要返回IEnumerable?(因为IEnumerable是延迟加载的,每次访问的时候才取值.也就是我们在Lambda里面写的where.select并没有循环遍历(只是在组装条件),只有在ToList或foreache的时候才真正去集合取值了.这样大大提高