什麼是范型? 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...