一、List泛型集合
集合是OOP中的一个重要概念,C#中对集合的全面支持更是该语言的精华之一。
1、为什么要用泛型集合
若我们直接将对象放入ArrayList,操作直观。但由于集合中的项都是Object类型,因此每次使用都必须就行繁琐的类型转换。那么此时,我们就可以考虑使用泛型来解决。
2、什么是泛型
泛型是C# 2.0中的新增元素(C++中称为模板),主要用于解决一系列类似的问题。这种机制允许将类名作为参数传递给泛型类型,并生成相应的对象。将泛型(包括类、接口、方法、委托等)看作模板可能更好理解,模板中的变体部分将被作为参数传进来的类名称所代替,从而得到一个新的类型定义。
3、如何创建泛型
主要利用System.Collections.Generic命名空间下面的List泛型类创建集合,语法如下:
List<T> ListOfT = new List<T>();
其中的“T”就是所要使用的类型,即可以是一些简单类型,例:string、int,也可以是用户自定义的类型。
二、泛型示例讲解
class Person
{
private string name; //姓名
private int age; //年龄
//创建Person对象
public Person(string name, int age)
{
this.name= name;
this.age = age;
}
}
//创建Person对象
Person p1 = new Person("张三", 23);
Person p2 = new Person("李四", 18);
Person p3 = new Person("王五", 41);
//创建类型为Person的对象集合
List<Person> persons = new List<Person>();
//将Person对象放入集合
persons.Add(p1);
persons.Add(p2);
persons.Add(p3);
//输出第2个人的姓名
Console.Write(persons[1].name);
可以看到,泛型集合大大简化了集合的实现代码,通过它,可以轻松创建指定类型的集合。
三、List的方法和属性
- Capacity 用于获取或设置List可容纳元素的数量。当数量超过容量时,这个值会自动增长。也可以设置这个值以减少容量,也可以调用trin()方法来减少容量以适合实际的元素数目。
- Count 属性,用于获取数组中当前元素数量
- Item( ) 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。
- Add( ) 在List中添加一个对象的公有方法
- AddRange( ) 公有方法,在List尾部添加实现了ICollection接口的多个元素
- BinarySearch( ) 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素
- Clear( ) 在List内移除所有元素
- Contains( ) 测试一个元素是否在List内
- CopyTo( ) 重载的公有方法,把一个List拷贝到一维数组内
- Exists( ) 测试一个元素是否在List内
- Find( ) 查找并返回List内的出现的第一个匹配元素
- FindAll( ) 查找并返回List内的所有匹配元素
- GetEnumerator( ) 重载的公有方法,返回一个用于迭代List的枚举器
- Getrange( ) 拷贝指定范围的元素到新的List内
- IndexOf( ) 重载的公有方法,查找并返回每一个匹配元素的索引
- Insert( ) 在List内插入一个元素
- InsertRange( ) 在List内插入一组元素
- LastIndexOf( ) 重载的公有方法,,查找并返回最后一个匹配元素的索引
- Remove( ) 移除与指定元素匹配的第一个元素
- RemoveAt( ) 移除指定索引的元素
- RemoveRange( ) 移除指定范围的元素
- Reverse( ) 反转List内元素的顺序
- Sort( ) 对List内的元素进行排序
- ToArray( ) 把List内的元素拷贝到一个新的数组内
- trimToSize( ) 将容量设置为List中元素的实际数目