C#中foreach原理以及模擬的實現(xiàn)
本文實例講述了C#中foreach原理以及模擬的實現(xiàn)方法,分享給大家供大家參考。具體如下:
{
string[] names = { "小楊", "科比布萊恩特", "凱文杜蘭特", "卡門安東尼" }; //在Person類里面定義一個字符串數(shù)組,以便用來模仿對象的索引訪問
public int Count { get { return names.Length; } } //可以通過對象訪問此屬性
public string this[int index] //定義一個索引器
{
get { return names[index]; }
}
public IEnumerator GetEnumerator()
{
return new MyClass(names); //實際上通過此方法就是返回一個可以實現(xiàn)循環(huán)的類的對象
// 用他的對象來移動索引
}
}
public class MyClass :IEnumerator
{
public MyClass(string[] names) //一個參數(shù)的構造函數(shù),用來和要遍歷的類的進行關聯(lián)
{
name = names;
}
private string[] name; //用此字段來存放接收過來的數(shù)組
int index = -1;
public object Current //獲取當前索引的元素的值
{
get
{
if (index<0) //準備狀態(tài)是-1,開始循環(huán)了在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);
}
//實際執(zhí)行foreach就相當于執(zhí)行下面幾句話:
Console.WriteLine("==================================================");
IEnumerator p1 = p.GetEnumerator();
while (p1.MoveNext())
{
string str=(string)p1.Current;
Console.WriteLine(str);
}
Console.ReadKey();
}
}
希望本文所述對大家的C#程序設計有所幫助。
- C#:foreach與yield語句的介紹
- C#使用yield關鍵字讓自定義集合實現(xiàn)foreach遍歷的方法
- C#使用foreach語句遍歷隊列(Queue)的方法
- C#使用foreach語句遍歷堆棧(Stack)的方法
- C#使用foreach語句搜索數(shù)組元素的方法
- C#使用foreach語句遍歷二維數(shù)組的方法
- C#中foreach語句使用break暫停遍歷的方法
- C#使用foreach語句簡單遍歷數(shù)組的方法
- C#使用foreach遍歷哈希表(hashtable)的方法
- C#中foreach語句深入研究
- C#使用foreach語句遍歷集合類型的方法
- C#中循環(huán)語句:while、for、foreach的使用
- 輕松學習C#的foreach迭代語句
相關文章
C#向數(shù)據(jù)庫中插入或更新null空值與延遲加載lazy
這篇文章介紹了C#向數(shù)據(jù)庫中插入或更新null空值與延遲加載lazy,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05Unity 按鈕事件封裝操作(EventTriggerListener)
這篇文章主要介紹了Unity 按鈕事件封裝操作(EventTriggerListener),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04c#linq里的Skip和Take實現(xiàn)分頁或遍歷
LINQ的優(yōu)勢在于它提供了一種直觀、類型安全的方式來操作各種類型的數(shù)據(jù),查詢常需要獲取一部分數(shù)據(jù),為了實現(xiàn)這一功能,LINQ提供了Take?和Skip運算符,Take運算符用于從一個序列中返回指定個數(shù)的元素,Skip運算符用于從一個序列中跳過指定個數(shù)的元素2024-01-01