C#中foreach原理以及模拟的实现
本文实例讲述了c#中foreach原理以及模拟的实现方法,分享给大家供大家参考。具体如下:
{
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;
}
}
在主方法里面:
{
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#中foreach原理以及模拟的实现
-
C#中foreach实现原理详解
-
解析php中session的实现原理以及大网站应用应注意的问题
-
【问题总结】****:卡尔曼滤波器的原理以及在MATLAB中的实现
-
java在线学习-SpringAop中pointcut的原理以及如何手动实现
-
JDK 7和JDK8中的HashMap的实现原理不同之处,以及JDK8中HashMap的优势之处
-
PHP中的&传值引用的问题,在foreach循环的结果能帮解释下输出的结果原理是什么? c# foreach javascript foreach c foreach
-
解析php中session的实现原理以及大网站应用应注意的问题
-
解析php中session的实现原理以及大网站应用应注意的问题_PHP教程
-
C#中关于程序功能实现以及对代码选择的思考