啥叫泛型?具體怎麼用?誰能給個詳細點的答覆

時間 2022-07-09 10:15:02

1樓:草薙在

英文是generic,意思是通用的,你知道美國通用gm麼?g就是這個。

意思是說,使用泛型的話,那麼這個類或者方法就可以通用化,在什麼地方通用化,就是即時不同型別都可以通用。說起來有點兒抽象啊。

泛型表現的最頻繁的地方就是集合類庫了,因為集合這種資料結構是非常非常常用的。

.net1.1使用集合的話,如arraylist,你可以往集合中存放任何東西,因為他的add方法接受的引數是object,眾所周知他是所有型別的父類。

但是要獲取的話,比如用索引器返回的也是object,那麼如果我們要使用的話必須強制轉換成所需的型別,比如string。這個壞處是我們可以向集合中放入任何物件,而取出來的時候我們都要判斷一下是否是所需要型別的物件以免使用的時候出現異常。

泛型就解決了這個問題,在.net2.0裡面使用list替換arraylist,其中t是一個型別引數,什麼是型別引數,就是說你可以使用一個型別來當作這個類初始化的變數,而初始化一個例項以後,所有集合內部的t型別會被你的型別引數替換,來個例子:

list有下面兩個成員

void add(t object); 一個方法,他接受一個t型別的物件

t this[int index] }一個所引起,他返回一個t型別的物件

你可以看到方法中使用了型別引數作為自己的宣告,那麼如果你使用new list();宣告一個list物件,那麼你呼叫add方法的時候會發現他的簽名是add(string object);這樣你只能把string作為引數傳入了,保證了安全,而索引器會變成string this[int index];這樣,查詢的物件返回的也是string,而不是object,這樣你就不需要擔心list中放入不是string的物件了。

以上只是泛型應用的一個最簡單的例子,通過配合反射,配合linq,你會發現泛型的威力是無法想象的。

希望對有幫助。

2樓:

liststrlist = new list();

strlist.add("aaaa");

strlist.add("bbbbb");

...............

3樓:匿名使用者

最簡單的泛型:

liststrlist = new arraylist();

strlist.add("aaaa");

strlist.add("bbbbb");

4樓:匿名使用者

把泛型當成一個陣列來看吧。

不過陣列要有上限,泛型沒有上限。

陣列要刪除一個元素很麻煩,泛型刪除很簡單。

泛型常用的有兩種list,dictionary兩種。

list這個可以和陣列對比,dictionary這個是字典泛型。

參考做一個簡單瞭解吧。

5樓:匿名使用者

避免裝箱和拆箱所帶來的損耗

j**a泛型介面是怎麼一回事,幹什麼用的

6樓:匿名使用者

現在也可以用object型別,但是返回值的時候你要把object型別擦除,強制轉換為具體型別,小專案看不出弊端,但是專案一大就不太方便,如果沒有泛型機制,系統不會幫忙檢查型別裝換,這就需要程式設計師自己記住大量資料轉換,還很容易型別裝換錯誤帶來的種種bug,好比你拿著一疊錢買菜,沒有泛型的話,你要親自一樣一樣的買,有泛型的話,你相當有一部機器,可以把你需要的一次性給你,就是不用自己親力親為,省力還少bug。同樣的路,有人搭飛機,有人步行,就這區別。

7樓:匿名使用者

泛型相當於籃子,在製造的時候沒有說明裡面裝的是什麼,在使用的時候再說明,比如:

籃子《雞蛋》 或者 籃子《蔬菜》

j**a裡泛型有什麼作用?我怎麼覺得那個可寫可不寫

8樓:匿名使用者

舉個例子來說

你的錢包裡你規定只裝錢

那麼你去出來的想

也不想就是錢,管他是¥還是$不用轉換的-->都是錢(確定裡面是什麼)不用泛型的話 就不規定放什麼

那麼你取出來的東西就不一定是錢,這樣你就要轉換了,那要是石頭的話你要轉換成錢就錯了(不確定裡面到底是什麼)

9樓:匿名使用者

泛型賦予了型別引數式多型

的能力泛型的第一個好處是編譯時的嚴格型別檢查。有效的避免了執行期的classcastexception,提高了程式的安全性和健壯性。

這是集合框架最重要的特點。此外,泛型消除了絕大多數的型別轉換。如果沒有泛型,當你使用集合框架時,你不得不進行型別轉換。

另外 泛型簡化了**,應用泛型的程式提高程式的可讀性,更利於團隊的合作開發。

10樓:百度使用者

首先你要明白:

他給出的這個泛型,不是無意義的.

如果定義容器了list,如果你不定義他的泛型,那麼他可以放不同型別的東西.

比如你定義了一個list,這樣的話

他只可以存放整型的資料,一旦你想要放其他的型別的資料,他會包錯.

所以這個泛型的目的就是是定義的容器所放的內容是一個統一的型別.

11樓:匿名使用者

在用集合類的時候

不用泛型我就不舒服……

j**a中什麼叫泛型??

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

12樓:drar_迪麗熱巴

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

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

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

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

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

13樓:匿名使用者

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

c語言中,泛型究竟是什麼啊,有詳細的解釋嗎

14樓:藍色**

泛型好像是c++中加入的,c語言要實現比較困難

j**a裡面<>的語法

j**a中什麼叫泛型?

15樓:匿名使用者

泛型。規定了此集合中元素的型別。例如:

arraylistarr = new arraylist();

這樣就建立了一個包含整數的 arraylist 物件。

如果要自己定義泛型類,就用如下形式:

class mycollection

尖括號中的型別可以有限制,例如你需要讓 mycollection 中的型別都具有可比性,可以用如下格式:

class mycollection

此外,要注意泛型的一些特性:

1. 不能直接建立泛型陣列。如 new arraylist[5] 之類的是錯的。

只能用如下方法:new arraylist[5] 或者 (arraylist)new arraylist[5];

2. 靜態方法中需要小心,因為 e 一般是非靜態型別,如果你這樣寫:

class mycollection

}是錯的。你只能把 去掉。

什麼叫泛型集合

16樓:snow雪米

泛型聽起來很高深的一個詞,但實際上它的作用很簡單,就是提高c#程式的效能。

比如在計算機中經常用到一些資料結構,如佇列,連結串列等,而其中的元素以前一般這麼定義:object a=new object();

這樣就帶來一個嚴重的問題,用object來表示元素沒有邏輯問題,但每次拆箱、封箱就佔用了大量的計算機資源,導致程式效能低下,而這部分內容恰恰一般都是程式的核心部分,如果使用object,那麼程式的表現就比較糟糕。

而使用泛型則很好的解決這個問題,本質就是在編譯階段就告訴編譯器,資料結構中元素的種類,既然編譯器知道了元素的種類,自然就避免了拆箱、封箱的操作,從而顯著提高c#程式的效能。

比如list就直接使用string物件作為list的元素,而避免使用object物件帶來的封箱、拆箱操作,從而提高程式效能。

可以自己編個小例子體驗一下在使用資料結構時的情形,自然就理解了。

17樓:戊辰青天

從字面上來講就是一個元素是泛型的集合唄。還是說你想問什麼是泛型?

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...

矩陣求其標準型,什麼叫矩陣的標準型,怎麼求?

1 1 1 2 0 2 3 4 0 2 1 2 等價1 1 1 2 0 2 3 4 0 0 4 2 等價1 0 0 0 0 2 3 4 0 0 4 2 等價1 0 0 0 0 2 0 0 0 0 4 2 等價1 0 0 0 0 1 0 0 0 0 4 2 等價1 0 0 0 0 1 0 0 0 0 ...

女孩問我啥叫性感呢怎麼幽默回覆

她問這種話有兩個原因 1 她想知道在男人眼中,女人 的樣子是什麼?也就是說她只想通過你瞭解一下男人!不代表有任何意義!所以你直接告訴她你眼中的 就行了,不必大費周章去揣摩!2 有可能她喜歡你,想知道你喜歡她 女友 是什麼樣子?但女孩子如果喜歡一個人,她會對你的一切感興趣,小到冷暖都會表示關注!如果你...