C#中foreach原理以及模擬的實(shí)現(xiàn)
本文實(shí)例講述了C#中foreach原理以及模擬的實(shí)現(xiàn)方法,分享給大家供大家參考。具體如下:
{
string[] names = { "小楊", "科比布萊恩特", "凱文杜蘭特", "卡門(mén)安東尼" }; //在Person類(lèi)里面定義一個(gè)字符串?dāng)?shù)組,以便用來(lái)模仿對(duì)象的索引訪問(wèn)
public int Count { get { return names.Length; } } //可以通過(guò)對(duì)象訪問(wèn)此屬性
public string this[int index] //定義一個(gè)索引器
{
get { return names[index]; }
}
public IEnumerator GetEnumerator()
{
return new MyClass(names); //實(shí)際上通過(guò)此方法就是返回一個(gè)可以實(shí)現(xiàn)循環(huán)的類(lèi)的對(duì)象
// 用他的對(duì)象來(lái)移動(dòng)索引
}
}
public class MyClass :IEnumerator
{
public MyClass(string[] names) //一個(gè)參數(shù)的構(gòu)造函數(shù),用來(lái)和要遍歷的類(lèi)的進(jìn)行關(guān)聯(lián)
{
name = names;
}
private string[] name; //用此字段來(lái)存放接收過(guò)來(lái)的數(shù)組
int index = -1;
public object Current //獲取當(dāng)前索引的元素的值
{
get
{
if (index<0) //準(zhǔn)備狀態(tài)是-1,開(kāi)始循環(huán)了在MoveNext中加1
{
return null;
}
else
{
return name[index];
}
}
}
public bool MoveNext()
{
++index; //每調(diào)用此方法就將索引往下+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);
}
//實(shí)際執(zhí)行foreach就相當(dāng)于執(zhí)行下面幾句話:
Console.WriteLine("==================================================");
IEnumerator p1 = p.GetEnumerator();
while (p1.MoveNext())
{
string str=(string)p1.Current;
Console.WriteLine(str);
}
Console.ReadKey();
}
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
- C#:foreach與yield語(yǔ)句的介紹
- C#使用yield關(guān)鍵字讓自定義集合實(shí)現(xiàn)foreach遍歷的方法
- C#使用foreach語(yǔ)句遍歷隊(duì)列(Queue)的方法
- C#使用foreach語(yǔ)句遍歷堆棧(Stack)的方法
- C#使用foreach語(yǔ)句搜索數(shù)組元素的方法
- C#使用foreach語(yǔ)句遍歷二維數(shù)組的方法
- C#中foreach語(yǔ)句使用break暫停遍歷的方法
- C#使用foreach語(yǔ)句簡(jiǎn)單遍歷數(shù)組的方法
- C#使用foreach遍歷哈希表(hashtable)的方法
- C#中foreach語(yǔ)句深入研究
- C#使用foreach語(yǔ)句遍歷集合類(lèi)型的方法
- C#中循環(huán)語(yǔ)句:while、for、foreach的使用
- 輕松學(xué)習(xí)C#的foreach迭代語(yǔ)句
相關(guān)文章
C#使用Objects?Comparer進(jìn)行對(duì)象比較
本文主要介紹了C#使用Objects?Comparer進(jìn)行對(duì)象比較,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
C#中方法的直接調(diào)用、反射調(diào)用與Lambda表達(dá)式調(diào)用對(duì)比
這篇文章主要介紹了C#中方法的直接調(diào)用、反射調(diào)用與Lambda表達(dá)式調(diào)用對(duì)比,本文著重講解了方法的三種調(diào)用方法以及它們的性能對(duì)比,需要的朋友可以參考下2015-06-06
C# 多線程中經(jīng)常訪問(wèn)同一資源可能造成哪些問(wèn)題
這篇文章主要介紹了C# 多線程中經(jīng)常訪問(wèn)同一資源可能造成哪些問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
WPF開(kāi)發(fā)txt閱讀器實(shí)現(xiàn)目錄提取功能
這篇文章主要為大家詳細(xì)介紹了WPF開(kāi)發(fā)txt閱讀器時(shí)如何實(shí)現(xiàn)目錄提取功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06

