泛型 什麼是泛型

2021-08-25 13:03:20 字數 1151 閱讀 2873

泛型:即通過引數化型別來實現在同乙份**上操作多種資料型別。泛型程式設計是一種程式設計正規化,它利用「引數化型別」將型別抽象化,從而實現更為靈活的復用。

c#泛型的作用概述:

c#泛型賦予了**更強的型別安全,更好的復用,更高的效率,更清晰的約束。

在乙個方法中,乙個變數的值是可以作為引數,但其實這個變數的型別本身也可以作為引數。泛型允許我們在呼叫的時候再指定這個型別引數是什麼。在.net中,泛型能夠給我們帶來的兩個明顯的好處是--型別安全和減少裝箱、拆箱。

下面我們先看乙個例子,說明為什麼要使用泛型。

using system;

using system.collections;

public class person

private string name;

private int age;

public string name

get}

public int age

get}

}class program}}

//我們在程式的入口點處執行,在集合中增加了乙個其他型別的物件,但插入資料的時候並沒有報錯,編譯也可以通過,但把「誰是功夫之王?」這樣的字段轉換**員的時候出問題了,這說明arraylist是型別不安全的。

這根本原因在於arraylist和hashtable集合把每個元素都當作object型別,在新增元素時不做型別檢查,進行了裝箱操作,將所有的資料型別都轉換為object型別。檢索元素時,對儲存元素進行拆箱才可以還原資料,如此頻繁和進行裝箱與拆箱,對系統的效能提出了更高的要求,同時每次都要進行強制型別轉換也很麻煩,容易出錯。為了解決這個問題,c#引入了泛型技術。

將上面的**改為:

using system;

using system.collections;

using system.collections.generic;

public class person

private string name;

private int age;

public string name

get}

public int age

get}

}class program}}

這段**會報錯,去掉這一句peoples.add("誰是功夫之王?");就會正常執行。

泛型 為什麼是泛型?

需求 先需編寫乙個程式,用棧 stack 進行進棧和出棧操作,並對棧中的元素進行運算。方案一 假設元素為int型別,則可使用 code class stack public void push int x public int pop 客戶 code class test 然而,現在需求發生變化。客...

關於泛型,什麼是泛型,如何理解泛型

泛型是jdk5中引入的特性,它提供了編譯時型別安全檢測機制,該機制允許在編譯時檢測到非法的型別,就不至於在執行時出現轉換異常,它的本質是引數化型別 即以任何型別 t 作為引數,在使用時可以傳入型別t的具體值 t 也就是將型別由原來的具體型別用引數t表示 即型別引數化 然後在使用 呼叫時傳入具體的型別...

什麼是泛型

分類 泛型 c 應用 2009 02 25 10 04 550人閱讀收藏 舉報 前言 net 2.0中泛型的出現是乙個令人激動的特徵。但是,什麼是泛型?你需要它們嗎?你會在自己的應用軟體中使用它們?在本文中,我們將回答這些問題並細緻地分析泛型的使用,能力及其侷限性。型別安全 net中的許多語言如c ...