C#泛型集合 using System.Collections.Generic

时间:2023-02-06 03:38:50

    泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱和拆箱。
    很多非泛型集合类都有对应的泛型集合类,下面是常用的非泛型集合类以及对应的泛型集合类:

非泛型集合类 泛型集合类
ArrayList List
HashTable DIctionary
Queue Queue
Stack Stack
SortedList SortedList

为什么要用泛型集合?
    在C# 2.0之前,主要可以通过两种方式实现集合:
    a.使用ArrayList
    直接将对象放入ArrayList,操作直观,但由于集合中的项是Object类型,因此每次使用都必须进行繁琐的类型转换。
    b.使用自定义集合类
    比较常见的做法是从CollectionBase抽象类继承一个自定义类,通过对IList对象进行封装实现强类型集合。这种方式要求为每种集合类型写一个相应的自定义类,工作量较大。泛型集合的出现较好的解决了上述问题,只需一行代码便能创建指定类型的集合。

什么是泛型?
    泛型是C# 2.0中的新增元素(C++中称为模板),主要用于解决一系列类似的问题。这种机制允许将类名作为参数传递给泛型类型,并生成相应的对象。将泛型(包括类、接口、方法、委托等)看作模板可能更好理解,模板中的变体部分将被作为参数传进来的类名称所代替,从而得到一个新的类型定义。

怎样创建泛型集合?
    主要利用System.Collections.Generic命名空间下面的List<T>泛型类创建集合,语法如下:

C#泛型集合 using System.Collections.Generic List < T >  ListOfT  =   new  List < T > ();

其中的"T"就是所要使用的类型,既可以是简单类型,如string、int,也可以是用户自定义类型。下面看一个具体例子。

定义Person类如下:

C#泛型集合 using System.Collections.Genericclass Person
C#泛型集合 using System.Collections.Generic
{
C#泛型集合 using System.Collections.Generic    
private string _name; //姓名
C#泛型集合 using System.Collections.Generic
    private int _age; //年龄
C#泛型集合 using System.Collections.Generic
C#泛型集合 using System.Collections.Generic    
//创建Person对象
C#泛型集合 using System.Collections.Generic
    public Person(string Name, int Age)
C#泛型集合 using System.Collections.Generic    
{
C#泛型集合 using System.Collections.Generic        
this._name= Name;
C#泛型集合 using System.Collections.Generic        
this._age = Age;
C#泛型集合 using System.Collections.Generic    }

C#泛型集合 using System.Collections.Generic
C#泛型集合 using System.Collections.Generic    
//姓名
C#泛型集合 using System.Collections.Generic
    public string Name
C#泛型集合 using System.Collections.Generic    
{
C#泛型集合 using System.Collections.Generic        
get return _name; }
C#泛型集合 using System.Collections.Generic    }

C#泛型集合 using System.Collections.Generic
C#泛型集合 using System.Collections.Generic    
//年龄
C#泛型集合 using System.Collections.Generic
    public int Age
C#泛型集合 using System.Collections.Generic    
{
C#泛型集合 using System.Collections.Generic        
get return _age; }
C#泛型集合 using System.Collections.Generic    }

C#泛型集合 using System.Collections.Generic}

C#泛型集合 using System.Collections.Generic
C#泛型集合 using System.Collections.Generic
//创建Person对象
C#泛型集合 using System.Collections.Generic
Person p1 = new Person("张三"30);
C#泛型集合 using System.Collections.GenericPerson p2 
= new Person("李四"20);
C#泛型集合 using System.Collections.GenericPerson p3 
= new Person("王五"50);
C#泛型集合 using System.Collections.Generic
C#泛型集合 using System.Collections.Generic
//创建类型为Person的对象集合
C#泛型集合 using System.Collections.Generic
List<Person> persons = new List<Person>();
C#泛型集合 using System.Collections.Generic
C#泛型集合 using System.Collections.Generic
//将Person对象放入集合
C#泛型集合 using System.Collections.Generic
persons.Add(p1);
C#泛型集合 using System.Collections.Genericpersons.Add(p2);
C#泛型集合 using System.Collections.Genericpersons.Add(p3);
C#泛型集合 using System.Collections.Generic
C#泛型集合 using System.Collections.Generic
//输出第2个人的姓名
C#泛型集合 using System.Collections.Generic
Console.Write(persons[1].Name);

   可以看到,泛型集合大大简化了集合的实现代码,通过它,可以轻松创建指定类型的集合。非但如此,泛型集合还提供了更加强大的功能,下面看看其中的排序及搜索。

 

摘录自<http://www.cnblogs.com/kenny-jiang/archive/2007/11/23/970033.html>