泛型最常見的用途是泛型集合,命名空間System.Collections.Generic 中包含了一些基於泛型的集合類,使用泛型集合類可以提供更高的類型安全性,還有更高的性能,避免了非泛型集合的重複的裝箱和拆箱。
很多非泛型集合類都有對應的泛型集合類,下面是常用的非泛型集合類以及對應的泛型集合類:
非泛型集合類 泛型集合類
ArrayList List
HashTable DIctionary
Queue Queue
Stack Stack
SortedList SortedList
很多非泛型集合類都有對應的泛型集合類,下面是常用的非泛型集合類以及對應的泛型集合類:
非泛型集合類 泛型集合類
ArrayList List
HashTable DIctionary
Queue Queue
Stack Stack
SortedList SortedList
爲什麼要用泛型集合?
在C# 2.0之前,主要可以通過兩種方式實現集合:
a.使用ArrayList
直接將對象放入ArrayList,操作直觀,但由於集合中的項是Object類型,因此每次使用都必須進行繁瑣的類型轉換。
b.使用自定義集合類
比較常見的做法是從CollectionBase抽象類繼承一個自定義類,通過對IList對象進行封裝實現強類型集合。這種方式要求爲每種集合類型寫一個相應的自定義類,工作量較大。泛型集合的出現較好的解決了上述問題,只需一行代碼便能創建指定類型的集合。
什麼是泛型?
泛型是C# 2.0中的新增元素(C++中稱爲模板),主要用於解決一系列類似的問題。這種機制允許將類名作爲參數傳遞給泛型類型,並生成相應的對象。將泛型(包括類、接口、方法、委託等)看作模板可能更好理解,模板中的變體部分將被作爲參數傳進來的類名稱所代替,從而得到一個新的類型定義。
泛型是C# 2.0中的新增元素(C++中稱爲模板),主要用於解決一系列類似的問題。這種機制允許將類名作爲參數傳遞給泛型類型,並生成相應的對象。將泛型(包括類、接口、方法、委託等)看作模板可能更好理解,模板中的變體部分將被作爲參數傳進來的類名稱所代替,從而得到一個新的類型定義。
怎樣創建泛型集合?
主要利用System.Collections.Generic命名空間下面的List<T>泛型類創建集合,語法如下:
主要利用System.Collections.Generic命名空間下面的List<T>泛型類創建集合,語法如下:
List<T> ListOfT = new List<T>();
其中的"T"就是所要使用的類型,既可以是簡單類型,如string、int,也可以是用戶自定義類型。下面看一個具體例子。
定義Person類如下:
class Person
{
private string _name; //姓名
private int _age; //年齡
//創建Person對象
public Person(string Name, int Age)
{
this._name= Name;
this._age = Age;
}
public Person(string Name, int Age)
{
this._name= Name;
this._age = Age;
}
//姓名
public string Name
{
get { return _name; }
}
public string Name
{
get { return _name; }
}
//年齡
public int Age
{
get { return _age; }
}
}
public int Age
{
get { return _age; }
}
}
//創建Person對象
Person p1 = new Person("張三", 30);
Person p2 = new Person("李四", 20);
Person p3 = new Person("王五", 50);
Person p1 = new Person("張三", 30);
Person p2 = new Person("李四", 20);
Person p3 = new Person("王五", 50);
//創建類型爲Person的對象集合
List<Person> persons = new List<Person>();
List<Person> persons = new List<Person>();
//將Person對象放入集合
persons.Add(p1);
persons.Add(p2);
persons.Add(p3);
persons.Add(p1);
persons.Add(p2);
persons.Add(p3);
//輸出第2個人的姓名
Console.Write(persons[1].Name);
可以看到,泛型集合大大簡化了集合的實現代碼,通過它,可以輕鬆創建指定類型的集合。非但如此,泛型集合還提供了更加強大的功能,下面看看其中的排序及搜索。
Console.Write(persons[1].Name);
可以看到,泛型集合大大簡化了集合的實現代碼,通過它,可以輕鬆創建指定類型的集合。非但如此,泛型集合還提供了更加強大的功能,下面看看其中的排序及搜索。