C#基础加强_泛型的基本原理
生活随笔
收集整理的這篇文章主要介紹了
C#基础加强_泛型的基本原理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?小弟初寫博文,深感“易敲千行碼,難下百余文”的道理。
內(nèi)容粗略淺薄,望各位大神海涵!
- 動態(tài)數(shù)組ArrayList可以實現(xiàn)不斷的增長,讓我們感受到了在某些地方較數(shù)組有優(yōu)越感。但它包含的數(shù)組類型是object類,意味著需要轉(zhuǎn)為數(shù)組時,存在拆裝箱操作,這帶來不必要的麻煩,也損失了性能。而List<T>泛型集合的出現(xiàn)便大大解決了上述問題。
foreach (string item in lists){Console.WriteLine(item);}lists[0] = "abcde";lists.RemoveAt(0);for (int i = 0; i < lists.Count; i++){Console.WriteLine(lists[i]);}Console.ReadKey();
- 泛型集合在創(chuàng)建的時候就要求指定類型,所以在遍歷集合或轉(zhuǎn)數(shù)組時,直接就是數(shù)據(jù)的原有類型。其實我們也可以自己寫個類似的類實現(xiàn)泛型集合的基本功能。
- 泛型直接通過<T>把元素的類型指定了,添加刪除元素和動態(tài)數(shù)組類似。但是當我們用foreach遍歷的時候,出問題了:
因此 foreach 語句不能作用于“泛型的實現(xiàn).MyList<int>”類型的變量。
- 不包含GetEnumerator的公共定義?難道是要實現(xiàn)一個接口?通過反編譯器查到 LIST<T>真的實現(xiàn)了名為“IEnumerable”的接口。
- 那我們就實現(xiàn)“IEnumerable”這個接口吧,再看IEnumerator,是一個接口對象,原來GetEnumerator()要求返回一個"IEnumerator"的接口對象。糾結(jié)了,哪里有這個對象啊。找不到,那我們自己寫個類來實現(xiàn)這個接口,不就ok了。
- 原來IEnumerator接口就是為了實現(xiàn)迭代功能的,foreach遍歷的時候并不直接指向第0個元素,就像位置是在-1一樣,先來判斷有沒有第0個元素,沒有直接返回false,有則指針移到第0,再執(zhí)行讀取。有了實現(xiàn)IEnumerator的類,就可以new一個MyEnumerator<T>對象來return了。
- 現(xiàn)在,MyList<T>也擁有List<T>的基本功能了哦,當然泛型還有很多其他的功能和特性,還有待我們?nèi)ゼ毤氀芯苛恕?/li>
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/lant-li/p/3843840.html
總結(jié)
以上是生活随笔為你收集整理的C#基础加强_泛型的基本原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Javascript_库编写]创建自己
- 下一篇: c# datagridviewcombo