1樓:
比如泛型容器可以儲存不同型別的元素物件
c#泛型的意義是什麼?
2樓:
範型的意義在於免去了型別之間互相轉換的系統開銷,和同類方法的過載,
比如,add方法你要過載兩個方法(int和double)或者更多方法,用範型只用寫一個add方法就可以完成int,double,float......等等的相加,
再如,集合的操作,沒有往往是弱型別(object),而用範型可以直接是強型別,無需轉換之間的開銷,節省了資源,
3樓:萢萢
泛型是程式設計語言的一種特性。允許程式設計師在強型別程式設計語言中編寫**時定義一些可變部分,那些部分在使用前必須作出指明。各種程式設計語言和其編譯器、執行環境對泛型的支援均不一樣。
將型別引數化以達到**複用提高軟體開發工作效率的一種資料型別。泛型類是引用型別,是堆物件,主要是引入了型別引數這個概念。
泛型的定義主要有以下兩種:
1.在程式編碼中一些包含型別引數的型別,也就是說泛型的引數只可以代表類,不能代表個別物件。(這是當今較常見的定義)
2.在程式編碼中一些包含引數的類。其引數可以代表類或物件等等。(人們大多把這稱作模板)不論使用哪個定義,泛型的引數在真正使用泛型時都必須作出指明。
c#中泛型的作用是什麼?
4樓:自殺
泛型copy(generic)是c#語言2.0和通用語言運bai
行時(clr)的一個新特du性。泛型為.net框架引入了型別引數(zhitype parameters)的概念。
型別引數使得設計dao類和方法時,不必確定一個或多個具體引數,其的具體引數可延遲到客戶**中宣告、實現。這意味著使用泛型的型別引數t,寫一個類mylist,客戶**可以這樣呼叫:mylist, mylist或 mylist。
這避免了執行時型別轉換或裝箱操作的代價和風險
c#中的泛型是什麼意思?
5樓:匿名使用者
泛型就是資料型別隨意。
6樓:在嘉庚園想回家的油桃
泛型是 2.0 版 c# 語言和公共語言執行庫 (clr) 中的一個新功能。泛型將型別引數的概念引入 .
net framework,型別引數使得設計如下類和方法成為可能:這些類和方法將一個或多個型別的指定推遲到客戶端**宣告並例項化該類或方法的時候。例如,通過使用泛型型別引數 t,您可以編寫其他客戶端**能夠使用的單個類,而不致引入執行時強制轉換或裝箱操作的成本或風險,如下所示:
// declare the generic class public class genericlist } class testgenericlist static void main() } 使用泛型型別可以最大限度地重用**、保護型別的安全以及提高效能。 泛型最常見的用途是建立集合類。 .
net framework 類庫在 system.collections.generic 名稱空間中包含幾個新的泛型集合類。
應儘可能地使用這些類來代替普通的類,如 system.collections 名稱空間中的 arraylist。 您可以建立自己的泛型介面、泛型類、泛型方法、泛型事件和泛型委託。
可以對泛型類進行約束以訪問特定資料型別的方法。 關於泛型資料型別中使用的型別的資訊可在執行時通過反射獲取。
7樓:小白丶風
型是一種特殊的型別,可以把型別的工作推遲到客戶端**宣告並例項化類或方法的時候進行。
8樓:匿名使用者
通過引數化型別來實現在同一份**上操作多種資料型別。利用「引數化型別」將型別抽象化,從而實現靈活的複用。
9樓:北林鬱
泛型就是用於處理演算法、資料結構的一種程式設計方法。泛型的目標地採用廣泛適用和可互動性的形式來表示演算法和資料結構,以使他們能夠直接用於軟體構造。
10樓:匿名使用者
**)一、解析泛型 泛型其實主要是為了實現**的重用,那麼它是如何實現的呢?在clr2.0中,實現了專門的il指令支援泛型操作,具體編譯過程為:
(1)初次編譯,首先生成il**和後設資料,t只是作為型別佔位符,不進行泛型型別的例項化。 (2)jit編譯,將以實際型別替換il**和後設資料中的t佔位符,並將其轉換為本地**,下一次對該泛型型別的引用將使用相同的本的**。 注意:
對於值型別和引用型別引數,泛型型別例項化有所不同。 (1)型別引數為值型別,jit編譯器為不同的值型別建立不同的本地** (2)型別引數為引用型別,共享本地**的單個副本,這主要是因為引用型別變數都是指向託管堆的引用指標,對於指標完全可以使用相同的方式來操作。 二、基礎概要 1、預設值 public t data; data = default(t);值型別的預設值為0,引用型別的預設值為null。
對於結構型別,初始化為其成員相應的預設值。 2、約束 在定義泛型類時,對於能夠用於例項化型別引數的型別所作的限制。 (1)t:
new(),表示型別引數必須具有公共無參建構函式。當有多個約束存在時,new()約束置於最後。 (2)t:
class,表示型別引數必須是引用型別。
11樓:匿名使用者
泛型就是可以匹配任意型別
c#中泛型集合有什麼用。
12樓:匿名使用者
泛型集合就類似於一個特定型別的陣列,但是和集合的概念一樣,可以儲存非常多的與這個型別相同的物件,而不需要像陣列那樣需要指定大小以確保能容納所有需要存放的物件;
而泛型介面和泛型類差不多,在你需要通過實現了這個介面的類的構造方法以例項化介面時需要給出引數型別,這樣介面裡的所有使用了泛型型別佔位符的地方都會被在執行時替換成特定的型別實參;
泛型委託也很簡單,就是可以定義一個通用的委託,這樣只需要修改型別引數,就可以做到將引數或者返回值的型別與型別引數相同,這樣就不需要定義多個引數相同且都有返回值但是型別不同的委託了;
泛型約束就是對泛型的型別實參進行了約束,比如約束泛型的型別實參只能是結構或者只能是類之類的約束規定;
c#中泛型最大的優勢是什麼?常用在哪些方面(具體的例子)?
13樓:壤駟興文韶起
泛型就是一個指定了資料型別的一個容器。
它可以根據實際情況去自動的分配容量。
且取資料的時候,無需拆箱操作、
簡單的舉個例子。
有一個父類person,student和teacher類均繼承之person。
現有一個集合list,那麼這個集合就可以存放person、student
、teacher的例項。
用person去迴圈陣列元素時。不需要型別轉換的。
如果樓主還有什麼疑問,**309
1404
00謝謝
什麼是泛型?他有什麼優點?
14樓:drar_迪麗熱巴
泛型。即通過引數化型別來實現在同一份**上操作多種資料型別。泛型是在c#2.
0引入的。泛型(genericity)的字面意思是指具有在多種資料型別上皆可操作的含意,與模板有些相似。
優點:泛型類和泛型方法同時具備可重用性、型別安全和效率,這是非泛型類和非泛型方法無法具備的。泛型通常用與集合以及作用於集合的方法一起使用。
泛型是c#2.0的一個新增加的特性,它為使用c#語言編寫物件導向程式增加了極大的效力和靈活性。不會強行對值型別進行裝箱和拆箱,或對引用型別進行向下強制型別轉換,所以效能得到提高。
泛型是程式設計語言的一種特性。允許程式設計師在強型別程式設計語言中編寫**時定義一些可變部分,那些部分在使用前必須作出指明。各種程式設計語言和其編譯器、執行環境對泛型的支援均不一樣。
15樓:匿名使用者
更加安全,避免裝箱拆箱操作
c# 泛型具體有什麼好處?在什麼地方能得以體現?
16樓:翼帆
關於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()
有泛型類,泛型介面,泛型方法,泛型委託
17樓:匿名使用者
泛型是具有佔位符(型別引數)的類、結構、介面和方法,這些佔位符是類、結構、介面和方法所儲存或使用的一個或多個型別的佔位符。泛型集合類可以將型別引數用作它所儲存的物件的型別的佔位符;型別引數作為其欄位的型別及其方法的引數型別出現。泛型方法可以將其型別引數用作其返回值的型別或者其某個形參的型別。
由於.net framework 泛型的型別引數之實際型別在執行時均不會被消除 泛型約束
,執行速度會因為型別轉換的次數減少而加快。 另外,使用 gettype 方法可於程式執行時得知泛型及其型別引數的實際型別,更可以運用反射程式設計。 允許對個別泛型的型別引數進行約束,包括以下幾種形式(假設 c是泛型的型別引數, 是一般類、泛類,或是泛型的型別引數):
t 是一個類。t 是一個值型別。t 具有無引數的公有建構方法。
t 實現介面 i 。t 是 c ,或繼承自 c 。
c泛型為什麼能解決裝箱拆箱問題,C 中泛型的作用是什麼?
1.使用非泛型集合時引發的裝箱和拆箱操作 var array new arraylist array.add 1 array.add 2 foreach int value in array value 宣告瞭一個arraylist物件,向arraylist中新增兩個數字1,2 然後使用foreac...
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語言中要求運算數必須是整型或字元型的運算子是
選擇d。是求bai餘運算子du,也叫zhi模除運算子,用於求餘數。要求兩個dao運算元均為整回數 或可以隱式轉答換成整數的型別 標準規定 1 如果 左邊的運算元為負數時,則模除的結果為負數或者0,2 如果 左邊的運算元為正數時,則模除的結構為正數或者0。測試 執行結果 位操作運算都復只能是整形或字元...