c#泛型是什麼?

  • 作者:由 匿名使用者 發表于 攝影
  • 2021-11-02

c#泛型是什麼? 匿名使用者 1級 2016-01-11 回答

即透過引數化型別來實現在同一份程式碼上操作多種資料型別。泛型是在C#2。0引入的。泛型(Genericity)的字面意思是指具有在多種資料型別上皆可操作的含意,與模板有些相似。泛型引入了型別引數化的概念,旨在實現定義的泛型類和方法將一個或多個型別的指定推遲到客戶端程式碼宣告並例項化該類或方法的時候。您可以編寫其他客戶端程式碼能夠使用的單個類,而不致引入執行時強制轉換或裝箱操作的成本或風險。為了使用這些強有力的資料結構,你所要做的僅是提供資料型別。

C#泛型的幾個特點:

(1)如果例項化泛型型別的引數相同,那麼JIT編譯器會重複使用該型別。

(2)C#的泛型型別可以應用於強大的反射技術。

(3)C#的效能高,我們知道ArrayList新增元素時都是object型別,如果新增一個值型別,就需要把它轉換為引用型別,當取出這個元素的時候又要將其轉換為值型別,這就需要裝箱和拆箱的操作,效能降低。而泛型無需型別的轉換操作。

(4)C#除可單獨宣告泛型型別(包括類與結構)外,也可在基類中包含泛型型別的宣告。但基類如果是泛型類,它的型別引數要麼已例項化,要麼來源子類(同樣是泛型型別)宣告的型別引數。

c#泛型是什麼? Levana 1級 2016-01-11 回答

泛型:將資料型別的定義推遲到例項化時再進行。 泛型類和object實現的類有截然不同的區別: 1。他是型別安全的。如:例項化為int型別的資料,就不能處理string型別的資料 2。無需裝箱和折箱。 3。無需型別轉換。 約束:在定義泛型類時,對在例項化類時用於型別引數的型別種類施加限制。這些限制稱為約束。 約束是是使用 where 上下文關鍵字指定的。 t:struct 結構型別引數必須是值型別。 t:class 類型別引數必須是引用型別,包括任何類、介面、委託或陣列型別。 泛型方法:泛型作用在類的方法上,他可根據方法引數的型別自動適應各種引數的方法 當一般方法與泛型方法具有相同的簽名時,會覆蓋泛型方法。

c#泛型是什麼? 匿名使用者 1級 2016-01-11 回答

泛型就是型別很泛,其實是定義了不同型別公有的一些操作,使用時例項化特定的型別都可以。

Top