C 中物件導向程式設計技術 泛型的使用

2022-08-24 14:27:12 字數 2936 閱讀 7545

1,使用泛型儲存不同型別的資料

泛型程式設計是一種程式設計方式,它利用「引數化型別」將型別抽象化,從而實現更靈活的復用。使用泛型儲存不用型別的資料時,首先定義乙個泛型類,並在泛型類中定義多個泛型變數,然後使用這些變數記錄不同型別的資料,這樣就可以重複利用泛型變數來儲存不同型別的資料。

泛型是用於演算法處理、資料結構的一中程式設計方法。泛型的目標是採用廣泛適用和可互動性的形式來表示演算法和資料結構,以使它們能夠直接用於軟體構造。泛型類、介面、結構、委託和方法可以根據它們儲存和操作的資料型別來進行引數化。泛型能在編譯時提供強大的型別檢查,減少資料型別之間的顯示轉換、裝箱操作和執行時的型別檢查。泛型類和泛型方法同時具備可重用性、型別安全和效率高等特性,這是非泛型類和非泛型方法無法具備的。

泛型類通常用到集合和在集合上執行的方法中。

宣告泛型類的語法與宣告普通類是類似的,,其語法格式如下:

【型別修飾】class 【類名】《型別引數 t>

泛型類的宣告相比普通類多了乙個型別引數t,型別引數t可以看作是乙個佔位符,它不是一種型別,它僅代表了某種可能的型別。在定義泛型類時,t出現的位置可以在使用時用任何型別來代替。型別引數t的命名規則如下:

1,使用描述性名稱命名泛型型別引數,除非單個字母名稱安全可以讓人了解它表示的含義,而描述姓名稱不會有更多的意義

2,將t作為描述性型別引數名的字首

例子:

class types

private

void button1_click(object

sender, eventargs e)

.net類庫中提供了開發人員常用的一些泛型類,主要有dictionary、list、queue、stack和sortedlist等,他們都位於system.collections.generic命名空間中。

2,通過泛型查詢陣列中的值

泛型方法是在宣告中包括了型別引數t的方法。泛型方法可以在類、介面或結構宣告中宣告,這些類、結構或介面本身可以是泛型或非泛型。如果在泛型型別宣告中宣告泛型方法,則方法體可以同時引用該方法的型別引數t和包含該方法宣告的型別引數t。泛型方法的語法格式如下:

【修飾符】【返回值型別】【方法名】《型別引數 t>()

例子:

public

class

finder

}return -1;//

如果沒有找到,返回-1

} }

通常情況下,建議使用泛型集合,因為這樣可以獲得型別安全的直接優點,而不需要從基集合型別派生並實現型別轉換特定的成員。此外,如果集合元素為值型別,泛型集合型別的效能通常優於對應的非泛型集合型別(並優於從非泛型集合型別派生的型別),因為使用泛型時不必對元素進行裝箱。

3,泛型類的繼承

泛型類的繼承與普通類的繼承是類似的,只是在繼承時多了乙個型別引數t,語法格式如下:

class derivedclaee 《型別引數 t>:baseclass 《型別引數 t>

例子:

class bstuinfo

class hstuinfo: bstuinfo

2,使用泛型類去除陣列中重複的數字

///

///去除陣列中重複的數字

/// ///

要去除重複數字的int陣列

///取得重複數字之後的陣列

static

int removenum(int

p_int_data)

}p_list_arrs.add(p_int_data[p_int_data.length - 1]);//

將陣列的最後乙個元素新增到泛型集合中

return p_list_arrs.toarray();//

將泛型集合轉換成陣列,並返回

}

上面例子中主要用到了list泛型集合及其add方法、toarray方法。

(1)list泛型集合

list泛型集合表示可通過索引訪問的物件的強型別列表,提供了用於對列表進行搜尋、排序和操作的方法。

list泛型集合位於system.collections.generic命名空間下

(2)list泛型集合的add方法

list泛型集合的add方法用於將物件新增到list的結尾處,該值可以為null。

public void add(t item)

item:要新增到list的末尾處的物件。對於引用型別,在該值可以為null。

(3)list泛型集合的toarray方法

list泛型集合的toarray方法用於將list的元素複製到1新的陣列中。其語法格式如下:

public virtual void add(object key,object value)

c 物件導向程式設計 泛型

泛型類是引用型別,是堆物件。優點 不會強行堆值型別進行裝箱和拆箱,或對引用型別進行向下強制型別轉換,所以效能能得到了提高。list可儲存任意指定型別的集合 優點 與arraylist型別的集合相比,arraylist 在新增string型別時,string型別會隱式強制轉換為object型別。同樣,...

C 物件導向程式設計技術(一)

物件導向程式設計 object oriented programming,oop 的基本思想是 將資料及處理這些資料的操作都封裝到乙個稱為類 class 的資料結構中。一 類和物件 1.類的宣告 類修飾符 class 類名 基類類名 注意 和 c 不同,c 不將類的宣告與實現分開。不會區分標頭檔案和...

C 中物件導向程式設計技術的應用 二

1,重寫虛方法 1 虛方法 虛方法就是允許被其子類重新定義的方法,在宣告時,需要用virtual修飾符 注意 1,virtual修飾符不能與static abstract或者override修飾符同時使用 2,由於虛方法不能是私有的,所有virtual修飾符不能與private修飾符同時使用 例如 ...