C#中foreach原理以及模拟的实现_C#教程-查字典教程网
C#中foreach原理以及模拟的实现
C#中foreach原理以及模拟的实现
发布时间:2016-12-28 来源:查字典编辑
摘要:本文实例讲述了C#中foreach原理以及模拟的实现方法,分享给大家供大家参考。具体如下:复制代码代码如下:publicclassPerso...

本文实例讲述了C#中foreach原理以及模拟的实现方法,分享给大家供大家参考。具体如下:

复制代码 代码如下:public class Person:IEnumerable //定义一个person类 并且 实现IEnumerable 接口 (或者不用实现此接口 直接在类 //里面写个GetEnumerator()方法)

{

string[] names = { "小杨", "科比布莱恩特", "凯文杜兰特", "卡门安东尼" }; //在Person类里面定义一个字符串数组,以便用来模仿对象的索引访问

public int Count { get { return names.Length; } } //可以通过对象访问此属性

public string this[int index] //定义一个索引器

{

get { return names[index]; }

}

public IEnumerator GetEnumerator()

{

return new MyClass(names); //实际上通过此方法就是返回一个可以实现循环的类的对象

// 用他的对象来移动索引

}

}

public class MyClass :IEnumerator

{

public MyClass(string[] names) //一个参数的构造函数,用来和要遍历的类的进行关联

{

name = names;

}

private string[] name; //用此字段来存放接收过来的数组

int index = -1;

public object Current //获取当前索引的元素的值

{

get

{

if (index<0) //准备状态是-1,开始循环了在MoveNext中加1

{

return null;

}

else

{

return name[index];

}

}

}

public bool MoveNext()

{

++index; //每调用此方法就将索引往下+1

if (index<name.Length)

{

return true;

}

else

{

return false;

}

}

public void Reset()

{

index=-1;

}

}

在主方法里面:

复制代码 代码如下:class Program

{

static void Main(string[] args)

{

Person p = new Person();

//for (int i = 0; i < p.Count; i++)

//{

// Console.WriteLine(p[i]);

//}

foreach (string item in p)

{

Console.WriteLine(item);

}

//实际执行foreach就相当于执行下面几句话:

Console.WriteLine("==================================================");

IEnumerator p1 = p.GetEnumerator();

while (p1.MoveNext())

{

string str=(string)p1.Current;

Console.WriteLine(str);

}

Console.ReadKey();

}

}

希望本文所述对大家的C#程序设计有所帮助。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C#教程学习
    热门C#教程学习
    编程开发子分类