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

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

IEnumerable 接口 實現foreach 遍歷 實例

2019-11-17 03:14:39
字體:
來源:轉載
供稿:網友

IEnumerable 接口 實現foreach 遍歷 實例

額 為啥寫著東西?

有次面試去,因為用到的時候特別少 所以沒記住, 這個單詞 怎么寫!

經典的面試題:

能用foreach遍歷訪問的對象的要求?

答: 該類實現IEnumetable 接口 聲明 GetEnumerator 方法。

這是統一的答案 非常正直 不是嘛?

但是 你真正的寫過 這個功能嗎?

今天看MSDN 關于IEnumetable 第一次看這個接口 沒看明白 ! 怎么辦? 自己跟著寫一次! 這個辦法非常好,我特推薦!

命名規則就隨便了, 別噴。

/// <summary>   /// 首先繼承Ienumerable 接口   /// </summary>   public class Ns : IEnumerable    {        PRivate List<object> list = new List<object>(); // 先定義委會的集合對象        private string name;        private string age;        private int id;        public string Name        {            get            {                return this.name;            }            set            {                this.list.Add(value);   // 特殊操作  賦值的時候將其先添加到維護的集合對象中                this.name = value;            }        }        public string Age        {            get            {                                return this.age;            }            set            {                this.list.Add(value);   // 特殊操作  賦值的時候將其先添加到維護的集合對象中                this.age = value;            }        }        public int Id        {            get            {                                return this.id;            }            set            {                this.list.Add(value);  // 特殊操作  賦值的時候將其先添加到維護的集合對象中                this.id = value;            }        }       /// <summary>       ///  必須實現 GetEnumerator方法 更具返回類型 IEnumerator 來創建一個繼承 IEnumerator接口的內部類       /// </summary>       /// <returns></returns>        public IEnumerator GetEnumerator()        {            return new NsIEnumerator(this);        }        /// <summary>        /// IEnumerator接口的內部類  PS  該類其實就是對 維護著的集合對象做遍歷操作的        /// </summary>        class NsIEnumerator : IEnumerator        {            private int ids = -1;   // 當前下標            private Ns n;           // 傳遞過來的 需要遍歷的類            public NsIEnumerator(Ns N)            {                this.n = N;            }            public bool MoveNext()     // 判斷是否遍歷完畢            {                this.ids++;                return (this.ids < this.n.list.Count);            }            public void Reset()     // 將下標重置            {                this.ids = -1;            }            public object Current   //  這個就是通過變換的下標獲取到的對應的 數據            {                get                {                    return this.n.list[this.ids];                }            }        }        static void Main(string[] args)        {            Ns n = new Ns();            n.Id = 1;            n.Name = "liwen";            n.Age = "18";                       foreach (var n1 in n)            {                Console.WriteLine(n1);            }            Console.ReadKey();        }    }

沒啥特別的 ,就是覺得可能很多人也和我一樣知道這個功能 但是卻自己沒實現過。 貼上個來讓那些人看一下。方便大家嘛


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲松县| 南漳县| 麟游县| 易门县| 尚志市| 金昌市| 无棣县| 北海市| 理塘县| 叶城县| 保德县| 宜阳县| 定安县| 六枝特区| 泾源县| 连南| 林周县| 林周县| 辽宁省| 酉阳| 长白| 若尔盖县| 衡阳市| 卢龙县| 永州市| 平遥县| 呈贡县| 鹿泉市| 垦利县| 关岭| 甘南县| 宁阳县| 乌拉特前旗| 当涂县| 化州市| 通海县| 贵溪市| 泌阳县| 藁城市| 忻城县| 黑龙江省|