C泛型的意義是什麼,C 中泛型的作用是什麼?

2021-08-09 02:47:12 字數 3421 閱讀 9893

1樓:

範型的意義在於免去了型別之間互相轉換的系統開銷,和同類方法的過載,

比如,add方法你要過載兩個方法(int和double)或者更多方法,用範型只用寫一個add方法就可以完成int,double,float......等等的相加,

再如,集合的操作,沒有往往是弱型別(object),而用範型可以直接是強型別,無需轉換之間的開銷,節省了資源,

2樓:萢萢

泛型是程式設計語言的一種特性。允許程式設計師在強型別程式設計語言中編寫**時定義一些可變部分,那些部分在使用前必須作出指明。各種程式設計語言和其編譯器、執行環境對泛型的支援均不一樣。

將型別引數化以達到**複用提高軟體開發工作效率的一種資料型別。泛型類是引用型別,是堆物件,主要是引入了型別引數這個概念。

泛型的定義主要有以下兩種:

1.在程式編碼中一些包含型別引數的型別,也就是說泛型的引數只可以代表類,不能代表個別物件。(這是當今較常見的定義)

2.在程式編碼中一些包含引數的類。其引數可以代表類或物件等等。(人們大多把這稱作模板)不論使用哪個定義,泛型的引數在真正使用泛型時都必須作出指明。

c#中泛型的作用是什麼?

3樓:自殺

泛型copy(generic)是c#語言2.0和通用語言運bai

行時(clr)的一個新特du性。泛型為.net框架引入了型別引數(zhitype parameters)的概念。

型別引數使得設計dao類和方法時,不必確定一個或多個具體引數,其的具體引數可延遲到客戶**中宣告、實現。這意味著使用泛型的型別引數t,寫一個類mylist,客戶**可以這樣呼叫:mylist, mylist或 mylist。

這避免了執行時型別轉換或裝箱操作的代價和風險

c#中泛型最大的優勢是什麼?常用在哪些方面(具體的例子)?

4樓:壤駟興文韶起

泛型就是一個指定了資料型別的一個容器。

它可以根據實際情況去自動的分配容量。

且取資料的時候,無需拆箱操作、

簡單的舉個例子。

有一個父類person,student和teacher類均繼承之person。

現有一個集合list,那麼這個集合就可以存放person、student

、teacher的例項。

用person去迴圈陣列元素時。不需要型別轉換的。

如果樓主還有什麼疑問,**309

1404

00謝謝

什麼是泛型?他有什麼優點?

5樓:drar_迪麗熱巴

泛型。即通過引數化型別來實現在同一份**上操作多種資料型別。泛型是在c#2.

0引入的。泛型(genericity)的字面意思是指具有在多種資料型別上皆可操作的含意,與模板有些相似。

優點:泛型類和泛型方法同時具備可重用性、型別安全和效率,這是非泛型類和非泛型方法無法具備的。泛型通常用與集合以及作用於集合的方法一起使用。

泛型是c#2.0的一個新增加的特性,它為使用c#語言編寫物件導向程式增加了極大的效力和靈活性。不會強行對值型別進行裝箱和拆箱,或對引用型別進行向下強制型別轉換,所以效能得到提高。

泛型是程式設計語言的一種特性。允許程式設計師在強型別程式設計語言中編寫**時定義一些可變部分,那些部分在使用前必須作出指明。各種程式設計語言和其編譯器、執行環境對泛型的支援均不一樣。

6樓:匿名使用者

更加安全,避免裝箱拆箱操作

c# 泛型具體有什麼好處?在什麼地方能得以體現?

7樓:翼帆

關於object型別:

1.object型別可以來引用任何型別的例項;

2.object型別可以儲存任何型別的值;

3.可以定義object型別的引數;

4.可以把object作為返回型別。

但是--這樣做有很大的問題

1.會因為程式設計師沒有記住使用的型別而出錯,造成型別不相容;

2.值型別和引用型別的互化即裝箱拆箱使系統效能下降。

c#2.0提出的泛型就是避免強制型別轉換,減少裝箱拆箱提高效能,減少錯誤。

system.collections.generic名稱空間提供許多集合類和介面的泛型版本。

定義:public class genericlist

的t是型別引數,起佔位符的作用,編譯時被真正型別取代。

使用泛型:

genericlistlist1 = new genericlist();

genericlistlist2 = new genericlist();

genericlist《類名》 list3 = new genericlist《類名》();

genericlist《類名> list4= new genericlist《類名>();

以list1為例編譯器生成以下的方法:

public void add(int input)

public int add()

有多個型別引數的泛型類:

public class 類名

泛型約束:

確保泛型類使用的引數是提供特定方法的型別。

public class genericlistwhere t : iemployee

假如iemployee介面包含a方法,編譯器會驗證用於替換t的型別一定要實現iemployee介面。

泛型方法:允許採取定義泛型類時採用的方式

//定義泛型方法

static void swap(ref t lhs, ref t rhs)

//使用泛型方法

public static void testswap()

有泛型類,泛型介面,泛型方法,泛型委託

8樓:匿名使用者

泛型是具有佔位符(型別引數)的類、結構、介面和方法,這些佔位符是類、結構、介面和方法所儲存或使用的一個或多個型別的佔位符。泛型集合類可以將型別引數用作它所儲存的物件的型別的佔位符;型別引數作為其欄位的型別及其方法的引數型別出現。泛型方法可以將其型別引數用作其返回值的型別或者其某個形參的型別。

  由於.net framework 泛型的型別引數之實際型別在執行時均不會被消除 泛型約束

,執行速度會因為型別轉換的次數減少而加快。   另外,使用 gettype 方法可於程式執行時得知泛型及其型別引數的實際型別,更可以運用反射程式設計。   允許對個別泛型的型別引數進行約束,包括以下幾種形式(假設 c是泛型的型別引數, 是一般類、泛類,或是泛型的型別引數):

t 是一個類。t 是一個值型別。t 具有無引數的公有建構方法。

t 實現介面 i 。t 是 c ,或繼承自 c 。

9樓:觀可樂舞

好處是不像陣列需要一開始就定義長度,泛型能自動增長。而且方便索引,排列等。

java泛型集合語法是什麼,java中泛型與普通集合有什麼聯絡有什麼關係概念是怎麼樣的?

例如 listlist new arraylist 是說存放在這個list裡的元素只能是string型別的。list t 其中這個t代表的是任意引用型別的物件。list裡面是任意的型別 不能是簡單型別int等 java中泛型與普通集合 有什麼聯絡 有什麼關係 概念是怎麼樣的?泛型就是新增了乙個型別引...

c中怎麼將泛型的List和ArrayList相互轉化

arraylist a listl 1.自定義函式 ienumerablecasttolist arraylist a l casttolist a tolist 或者l new list casttolist a 或者l.addrange casttolist a 2.3.0中的擴充套件方法 ar...

c泛型方法中,如何呼叫類引數中的靜態方法

很明顯,你的函式要抄做的是乙個把弱型別的datatable對映到強型別list的orm功能,但getentitybydatarow這個對映函式根本不應該定義到t中,你可以單獨寫乙個靜態類,裡面使用反射技術,完成反射就可以了。既然在同類中,直接寫方法名不行麼?試試last.add dynamic t ...