- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
伟大的泛型
偉大的泛型
本章涵蓋的範圍
泛型型別與方法
.NET 2.0 的泛型集合
泛型的限制
和其他語言做比較
1
在開始之前先講一個小故事 :有一天我和我太太到雜貨店去買些東西,在離開之
前她問我是否有帶清單,確認之後我們就離開了雜貨店,在這我們犯了一個錯誤,
就是我太太問我是否有帶「購物清單」,但我以為是另外一張清單,在這邊就提到
C# 2.0 一個新特性:泛型 (因為清單可以是代表各種類型的清單),之後透過購物
清單去購買一些商品(購買的動作就會使用到匿名方法),如果可以透過這樣的方
式來達成,不管是哪一種清單,都會自動的去採購對應的商品,那這就是 C# 2.0
泛型的主要目的。泛型的其中一個用途,就是可以讓不同型別去做相同動作的事情。
1
這邊的目的是為了方便介紹本章的主題。
: 改善的議題
64 Part II C# 2.0
對大多數人而言,泛型(generic )是C# 2.0 相當重要的一個特性,它改善了集合
物件存取上的效能,以及讓程式碼能夠更有彈性,並且解決執行期間可能發生的錯
誤(關於型別上的錯誤),透過泛型的特性,就可以很清楚的告訴編譯器,目前是
屬於哪一種型別,例如在ArrayList 存取資料時,若取出的資料轉型錯誤,就會在
執行時期拋出例外,若使用ListT 就可以在編譯時期偵測出來。然而泛型可以使
用在型別以及方法上,一般在傳遞參數的時候,都只是將值傳入到方法中,而泛型
方法(generic method )則是多了一個型別參數,用來告訴方法目前所要使用的型
別。看完這些可能會很難理解這裡所要表達的意思,但如果對它有一些概念存在
了,相信熟悉之後會對泛型愛不釋手。
在這一章我們將了解如何使用泛型以及相關的方法(.NET Framework 所提供的一
些API ),並透過範例來教導各位如何寫泛型的程式。在前面已經有提到泛型重要
的原因,之後將帶各位來了解泛型的一些用法,以及如何改善弱型別的集合物件,
而在本章的最後,會說明一些泛型經常遇到的限制,以及它如何去解決這樣的問
題,之後會比較與C# 泛型相似的其他語言。
下面會先讓各位了解目前所遇到的問題,然後會說明泛型是如何做改善。
3.1 為什麼需要泛型?
在寫 C# 1.0 程式的時候,不知道各位是否常常有使用到轉型?如果希望讓任何型
別的資料都可以放到集合中,可以發現到一件事情,就是程式碼要做大量的轉型工
作。然而這些集合物件所有的API ,參數以及回傳值都是使用object 的型別,雖然
object 可以用來接收不同型別的物件,但是object 所能提供的資訊是相當少的,所
以為了能夠取得到原來型別的物件,就只能透過轉型來達成。
轉型是否就是不好呢?如果程式碼不常使用到轉型,其實轉型並不算壞,但是相反
的,大量的轉型將會影響到效能上的運作,轉型是為了要告訴編譯器更多的資訊,
而編譯器也會信任我們所做的型別轉換,所以到執行時期時,才會對型別做檢查,
並判斷是否屬於有效的轉型。
為了避免不必要的轉型,因此就有了一些新的想法,例如宣告變數或是方法時,可
以透過額外的資訊,來告訴目前屬於哪種型別,可以方便其他人了解在集合內所要
處理的資料型別。泛型可以確保在編譯時期間,判斷傳入參數的型別是相符的(過
去就需要手動的去檢查,或是在執行時期發生錯誤時,才知道該如何修正)。有了
這些額外的資訊,可以讓程式碼更加的有效率,並提供編譯器檢查型別的方式;而
Visual Studio 的 IntelliSense 也可以取得額外的資訊,會判斷集合內可以加入哪些
型別(例如宣告 , 就會知道下次要加入的資料需為
Liststring Visual Studio
string );在方法的呼叫上,可以清楚的定義要傳入的型別以及回傳型別,並且程
式碼可以在一開始,就定義好使用的型別,這樣可以也可以更容易閱讀。
您可能关注的文档
- 以以以育一.PDF
- 从超分子聚合物到超分子有机框架组装溶液相超-影像科学与光化学.PDF
- 以PhotoImpact 制作的网页.PPT
- 以整批预装货计算,收取散货之货仓处理费及 - haffa.DOC
- 他呼唤的是:和平!和平!.PPT
- 以天然药物研究为导向整合天然药物实验-浙江大学药学院.PDF
- 以及民族工业的崛起,使得金融流量与日俱增1896年,荣氏兄弟开设广.PPT
- 以来对於文官制度的改革.PPT
- 以竞争为导向的二手车定价体系.PPT
- 以霍氏红外线光谱仪探讨高分子结晶行为及高分子与锂离子的交互作用.PDF
- 2025喀什地区公务员行测真题含答案详解【典型题】.docx
- 2025通辽市公务员行测含答案详解(黄金题型).docx
- 2025喀什地区公务员行测真题含答案详解【典型题】.docx
- 2024年阳江市公务员行测真题及答案详解【真题汇编】.docx
- 2025冶金工业技能鉴定每日一练试卷附参考答案详解【轻巧夺冠】.docx
- 2024阿勒泰地区公务员行测附参考答案详解(巩固).docx
- 2024韶关市公务员行测参考答案详解.docx
- 2025冶金工业技能鉴定综合提升测试卷【各地真题】附答案详解.docx
- 2024营口市公务员行测真题【考点梳理】附答案详解.docx
- 2024药店相关技能鉴定模拟试题及参考答案详解【基础题】.docx
文档评论(0)