亚洲国内精品自在线影视_大胆日本免费_一级a毛一级a做视频在线观看_亚洲中文无码永久免老牛影视,一级A片免费观看一,岛国av无码网,国产强奸精品,国产精品久久一区二区三区,在线免费电影无码,大黑人交XXXX大黑人交免费看,成年人女人视频

南京軟件定制開發(fā)

南京傾心軟件歡迎您訪問本站

13605185909

新聞資訊

NEWS CENTER
欄目導(dǎo)航

南京軟件開發(fā)之C#泛型

發(fā)布時(shí)間:Mar 22, 2021         已有 人瀏覽

一,、什么是泛型

泛型是C#語言和公共語言運(yùn)行庫(CLR)中的一個(gè)新功能,,它將類型參數(shù)的概念引入.NET Framework,。類型參數(shù)使得設(shè)計(jì)某些類和方法成為可能,,例如,,通過使用泛型類型參數(shù)T,,可以大大簡化類型之間的強(qiáng)制轉(zhuǎn)換或裝箱操作的過程,。說白了,泛型就是通過參數(shù)化類型來實(shí)現(xiàn)在同一份代碼上操作多種數(shù)據(jù)類型,,利用“參數(shù)化類型”將類型抽象化,,從而實(shí)現(xiàn)靈活的復(fù)用。

以下是一個(gè)簡單的示例,,可以通過T來控制不同的類型

此時(shí),,Test就是一個(gè)泛型類,。T就是要實(shí)例化的泛型類型。如果T被實(shí)例化為int型,,那么成員變量就是int型的,,如果T被實(shí)例化為string型,那么就是string類型的,。

該例中,,我創(chuàng)建了一個(gè)稱為MyList泛型類。為把它參數(shù)化,,我簡單地插入了一個(gè)尖括號,。在<>內(nèi)的T代表了實(shí)際的當(dāng)使用該類時(shí)要指定的類型。在MyList類中,,定義了一個(gè)靜態(tài)字段objCount,。我在構(gòu)造器中增加它的值。因此我能發(fā)現(xiàn)使用我的類的用戶共創(chuàng)建了多少個(gè)那種類型的對象,。屬性Count返回與被調(diào)用的實(shí)例同類型的實(shí)例的數(shù)目,。

泛型方法

Copy()方法就是一個(gè)泛型方法,它與參數(shù)化的類型T一起工作,。當(dāng)在Main()中激活Copy()時(shí),,編譯器根據(jù)提供給Copy()方法的參數(shù)確定出要使用的具體類型。

二,、泛型的主約束和次約束是什么,?

       where T : struct 類型必須是一種值類型(struct)

  where T : class 類型必須是一種引用類型(class)

  where T : new() 類型必須有一個(gè)無參數(shù)的構(gòu)造器

  where T : class_name 類型可以是class_name或者是它的一個(gè)子類

  where T : interface_name 類型必須實(shí)現(xiàn)指定的接口

  你可以指定約束的組合,就象: where T : IComparable, new(),。這就是說,,用于參數(shù)化類型的類型必須實(shí)現(xiàn)Icomparable接口并且必須有一個(gè)無參構(gòu)造器。

舉例

1.接口約束,。

例如,,可以聲明一個(gè)泛型類 MyGenericClass,這樣,,類型參數(shù) T 就可以實(shí)現(xiàn) IComparable<T> 接口:

區(qū)別于

一個(gè)是T繼承IComparable,,一個(gè)是MyGenericClass2繼承IComparable

2.基類約束。

指出某個(gè)類型必須將指定的類作為基類(或者就是該類本身),,才能用作該泛型類型的類型參數(shù),。這樣的約束一經(jīng)使用,就必須出現(xiàn)在該類型參數(shù)的所有其他約束之前,。

3.構(gòu)造函數(shù)約束,。

以使用 new 運(yùn)算符創(chuàng)建類型參數(shù)的實(shí)例;但類型參數(shù)為此必須受構(gòu)造函數(shù)約束 new() 的約束,。new() 約束可以讓編譯器知道:提供的任何類型參數(shù)都必須具有可訪問的無參數(shù)(或默認(rèn))構(gòu)造函數(shù),。new() 約束出現(xiàn)在 where 子句的最后。

4.對于多個(gè)類型參數(shù),,每個(gè)類型參數(shù)都使用一個(gè) where 子句,。

5.還可以將約束附加到泛型方法的類型參數(shù)。

6. 裸類型約束

用作約束的泛型類型參數(shù)稱為裸類型約束,。當(dāng)具有自己的類型參數(shù)的成員函數(shù)需要將該參數(shù)約束為包含類型的類型參數(shù)時(shí),,裸類型約束很有用。

 為什么要有約束呢,?

當(dāng)一個(gè)泛型參數(shù)沒有任何約束時(shí),,它可以進(jìn)行的操作和運(yùn)算時(shí)非常有限的。因?yàn)椴荒軐?shí)參做任何類型上的保證,,這時(shí)候就需要用到泛型的約束,。泛型的主要約束和次要約束都是指泛型的實(shí)參必須滿足一定的規(guī)范。C#編譯器在編譯的過程中可以根據(jù)約束來檢查所有泛型類型的實(shí)參并確保其滿足約束條件,。

一個(gè)泛型參數(shù)可以至多擁有一個(gè)主要約束,,主要約束可以是一個(gè)引用類型、class或者struct,。如果指定一個(gè)引用類型,,則實(shí)參必須是該類型或者該類型派生類型。class規(guī)定實(shí)參必須是一個(gè)引用類型,。struct規(guī)定了參數(shù)必須是一個(gè)之類新,。

Copyright © 2020-2022 南京傾心軟件技術(shù)有限公司 版權(quán)所有     蘇ICP備2020070309號-1
QQ在線咨詢
13605185909
返回頂部