伟大的泛型.PDF

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 );在方法的呼叫上,可以清楚的定義要傳入的型別以及回傳型別,並且程 式碼可以在一開始,就定義好使用的型別,這樣可以也可以更容易閱讀。

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档