C#中foreach道理和模仿的完成。本站提示廣大學習愛好者:(C#中foreach道理和模仿的完成)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中foreach道理和模仿的完成正文
本文實例講述了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#法式設計有所贊助。