国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C# foreach 原理以及模擬的實現

2019-11-17 02:49:09
字體:
來源:轉載
供稿:網友

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(); } }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平湖市| 临高县| 安泽县| 富川| 休宁县| 赞皇县| 大方县| 信丰县| 天等县| 拉萨市| 宁强县| 宽城| 佛山市| 玉溪市| 浪卡子县| 肃宁县| 固始县| 固镇县| 桃园县| 江门市| 腾冲县| 榕江县| 包头市| 蓝田县| 开江县| 香港 | 彭州市| 玛曲县| 慈利县| 二手房| 正镶白旗| 荔波县| 宣汉县| 太和县| 昔阳县| 河间市| 黄石市| 波密县| 六盘水市| 广安市| 贺兰县|