泛型和集合

2021-09-06 06:35:34 字數 1053 閱讀 6190

集合:arraylist類,是命名空間system.collections下的一部分,它是使用大小可按需動態增加的陣列實現ilist介面,但是arraylist不是型別安全的。

泛型集合:list類,是對arraylist的乙個完善。通常情況下建議使用泛型集合,因為這樣可以獲得型別安全的直接優點。

ilist介面:為arraylist和list定義了一些操作方法。

本例中,我們建立了乙個arraylist的例項,並把3和4新增給它。然後我迴圈遍歷該arraylist,從中取出整型值然後把它們相加。這個程式將產生結果"total is 7"。現在,如果我去掉下面語句的注釋:

list.add(

5.0);

程式將產生如下的執行時刻異常.

注意:上面的例項,如果是用vb.net書寫的話,是不會失敗的。原因在於,vb.net不使用裝箱機制,它啟用乙個把該double轉換成整型的方法。但是,如果arraylist中的值是不能轉換成整型的,vb.net**還會失敗。

作為乙個習慣於使用語言提供的型別安全的程式設計師,你希望這樣的問題在編譯期間浮出水面,而不是在執行時刻。這正是泛型產生的原因。

例2.型別安全的泛型列表

list<

int> alist

=new

list<

int>();

alist.add(3);

alist.add(4);

inttotal =0

;foreach

(int

val

inalist)

console.writeline(

"total is

", total);

在例2中,我編寫了乙個泛型的列表的例子,在尖括號內指定引數型別為int。該**的執行將產生結果"total is 7"。現在,如果我去掉語句doublelist.add(5.0)的注釋,我將得到乙個編譯錯誤。編譯器指出它不能傳送值5.0到方法add(),因為該方法僅接受int型。不同於例1,這裡的**實現了型別安全。

泛型集合,非泛型集合

arraylist 非泛型集合 list 泛型集合 集合跟陣列比較我們更容易理解。陣列 1,長度固定2,資料型別預先宣告 集合 1,長度可變2,資料型別預先宣告的為泛型集合,資料型別不限定為非泛型 arraylist 長度不固定,元素資料型別為object的集合。object類之間或間接為所有類的父...

C 中的非泛型集合和泛型集合

今天學習了c 中的非泛型集合arraylist和泛型集合list 先來看非泛型集合 使用非泛型集合之前注意呼叫system.collections using system using system.collections namespace lesson21 2 清空陣列 a.clear flag...

泛型和map集合

1 泛型 jdk1.5出現的安全機制 好處 1 將執行時期的問題classcastexception轉換為編譯時期。2 避免了強制轉換的麻煩 什麼時候用?當操作的引用資料型別不確定的時候,就使用 將要操作的引用資料型別傳入即可,其實 就是乙個用於接收具體引用資料型別的引數範圍。泛型技術是給編譯器使用...