黑馬程式設計師 泛型基礎

2021-06-22 21:36:09 字數 1113 閱讀 4752

----------

泛型:主要思想就是將演算法從資料結構中抽象出來,使得預定義的操作能夠作用於不同的型別,從而提高城鄉的效率、通用性和型別安全性,進而簡化整個程式設計模型。

1、為何使用泛型

例項多個過載方法:

public static void swap(ref int x,ref int y)

public static void swap(ref float x,ref float y)

.......

用泛型:

public static void swap(ref object x,ref object y)

綜上所述:定義抽象的演算法,它能夠作用於「抽象的」而非「具體的」資料型別,求解實際問題時,再將抽象資料型別替換為具體型別。

型別限制:主要限制,次要限制,建構函式限制。

主要限制:是將型別引數的目標型別限制為值型別或引用型別。

public class gawhere t:struct //限制t的目標型別為值型別

public class gawhere t:class  //限制t的目標型別為引用型別

次要限制:是將型別引數的目標型別限制為從指定的基類或介面繼承

public claass a

public class gawhere t:a // 基類限制

public inte***ce ib 

} public class gbwhere t:ib  //介面限制

建構函式限制:要求目標型別必須提供乙個預設的無參建構函式,書寫格式是new關鍵字加一對括號。new限制總是出現在所有型別限制的最後。

public class btreenodewhere t:struct,new ()

泛型繼承規則:

基本原則:開放型別不能作為封閉型別的基類。

1)普通類之間的繼承,這屬於封閉型別之間的繼承。

2)泛型類繼承普通型別,這屬於開放型別從封閉型別繼承。

3)普通型別繼承泛型類,此時非泛型的普通類不能直接繼承自泛型類,而是只能繼承泛型類的封閉構造型別,因此也屬於封閉型別之間的繼承。

4)泛型型別繼承泛型型別,這屬於開放型別之間的繼承,

----------

黑馬程式設計師 泛型

泛型定義在類上 class utlis 物件,方法 泛型定義在方法上 public void print 泛型定義在類上和定義在方法上的 區別?泛型定義在類上,想要呼叫同一種方法,不同型別或不同方法的不同型別,要new多次不同型別的類。泛型定義在方法上,想要呼叫同一種方法,不同型別或不同方法的不同型...

黑馬程式設計師 泛型集合

把任何型別物件通過add object obj 放入list中,認為只是object型別 通過get int index 取出list中元素時必須進行強制型別轉換,繁瑣而且容易出現異常 使用map的put object key,object value 和get object key 訪問物件時存在...

黑馬程式設計師 List 泛型集合

asp.net android io開發s net培訓 期待與您交流!泛型集合 概念 就是只能儲存特定型別的集合 集合跟陣列本質的區別 陣列的長度一旦宣告了 就不能再改變了 而集合可以任意更改長度 using system using system.collections.generic using...