generics 范型 的使用

2021-09-08 14:22:40 字數 1491 閱讀 3558

什麼是范型? u

system.collections.generic命名空間包含了范型集合需要的類和介面; u

我們在寫程式的時候

, 經常需要這種東西

: 可變長度的

array,

比如說乙個

string

而事實上定義了乙個

string

並初始化後那麼它的長度就固定了

, array

根本做不到

. 如果非要實現這種功能

, 那唯一合理的辦法只有定義乙個

arraylist,

這個類似於

vector

型別的東西可以實現可變長度的

array,

但是帶來幾個問題

:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> l

1. arraylist

裡面操作的都是

object

型別,

這意味著如果我放乙個

string

進去,

再當作int

取出來,

這在編譯階段是不會出錯的

, 而在執行時才會提示轉換無效 l

2. 以

object

方式儲存時

, 需要裝箱和拆箱操作

, 這些步驟會帶來額外的效能消耗

- 而沒法做到普通

array

那樣直接 l

3. 如果要避免前兩個問題

, 那麼所有的需要強型別的集合類都需要分別定義

, 比如

***xcollection,

非常麻煩 u

解決辦法: l

collectionstrcollection = new collection();

strcollection.add("a")

;strcollection.add("b");..... l

這樣strcollection

就是我們需要的集合

. 范型使

add/remove

等操作全部都是型別安全的

, 以索引器訪問時也是型別安全的

, 這在編譯階段(對於

vs來說可以包括編寫**的階段

)就可以反映出來

. 而效能方面

, 這裡根本就沒有裝箱

/拆箱的操作

, 所以比原有

arraylist

方式效能更高

. 也沒有像以前那樣宣告乙個

stringcollection

之類的class,

**上也簡潔的多.

u范型的特點 l

增加了編譯時的型別檢查; l

減少了裝箱和拆箱操作; l

減少了執行時的型別檢查; l

cast

范型的轉變

還是回到上次聽講座的時候,第一部分的就是 范型的轉變 其中的內容主要講了瀑布式模型怎麼在一開始就不成立,而因為誤解卻廣為傳播。同時,迭代式開發也並非是瀑布式開發的後繼者或者改良,而是同步發展的另一種對軟體開發的思維方式。也就是另一種范型。呵呵,兩頭牛在聊天,一頭說 最近瘋牛症很流行啊?搞得我擔心的都...

TypeScript中的范型

比如我們有乙個函式,如果不使用范型是這樣的 function getdata arg number number它只能傳入number型別,如果我們要傳入乙個string型別的是編譯不通過的,所以我們可以寫另乙個函式或者用any型別 function getdata1 arg string stri...

C 范型入門

范型是microsoft.net 2.0裡面乙個新加的內容,它使得c 語言更加完美。鑑於范型這個概念炒作炒得太虛,而缺少實際例子,使得很多菜鳥搞不懂這個概念,所以我來詳細說明1個例子程式,大家就能明白了。一 首先在vs2005環境裡面新建乙個控制台應用程式 console 二 完成如下 static...