泛型集合类在现实的开发应用中得到广泛的使用,这是因为泛型集合的功能十分强大,并且能够提高类的安全性和提高程序运行效率。在下面的内容中,将详细介绍常用泛型集合类的使用方法。
1.基本处理
这里的基本处理是指添加和删除存储列表的数据等常规操作。基本处理的流程如下。
1)设置一个容量为0的字符串列表。
2)通过显示容量属性。
3)使用Add()方法进行添加处理,使用Remove来删除指定的数据。
实例58:使用泛型集合类
下面通过一个实例来说明使用泛型集合类的基本流程。本实例保存在“光盘:\daima\13”文件夹内,项目名为fanjihe。实例的功能是预先定义字符串列表,然后调用集合类的操作方法和属性,并操作处理列表内的数据。实例文件的主要代码如下所示:
上述实例代码的设计流程如下。
1)定义集合类对象mm。
2)设置mm的初始值为0,并输出对应结果的文本。
3)通过Add()方法向列表内添减4个数据。
4)通过foreach读取并输出显示添加后的列表数据。
5)通过Count()方法获取并显示当前列表内的数据数目。
6)判断列表mm内是否已包含“AA”。
7)使用Insert()方法添加“EE”。
8)foreach读取并输出显示添加后的列表数据。
9)通过Remove()方法删除列表对象mm内的数据“AA”。
10)分别调用TrimExcess和Clear,将列表mm的数据输出并显示。
执行后将使用编写的操作方法操作处理列表对象mm的数据,并输出显示处理后的对应数据,如图13-1所示。
图13-1 实例执行结果
多学一招
在实际项目开发时,建议读者使用泛型集合类,这样可以获得更好的类型安全,并且不需要从基集合类派生并实现类型特定的成员。C#中泛型集合和对应的非泛型集合的具体使用类似,但是泛型类型集合能够提供非泛型集合所没有的功能。例如,List<T>可以接受泛型的委托方法,并允许指定的、用于排序和搜索列表的IComparer泛型接口实现。
2.键值处理
键值处理可以对有字符串键的对象进行添加和删除处理操作。键值处理的基本流程如下。
1)预先设置一个具有Dictionary<TKey,TValue>的对象。
2)使用Add()方法进行添加处理。(www.xing528.com)
3)使用Remove删除指定的数据。
注意
当添加重复的键值时会引发异常错误。
实例59:使用泛型集合类的键值
下面通过一个具体的实例来说明使用泛型集合类的键值处理流程。本实例保存在“光盘:\daima\13”文件夹内,项目名为usejianjihe。实例的功能是预先定义键值对象,然后调用集合类的操作方法和属性,对对象内的数据进行操作处理。实例文件的主要代码如下:
上述实例代码的设计流程如下。
1)定义类型键值对象mm。
2)通过Add()分别向mm内添加键值aaa、bbb、ccc和ddd。
3)如果再次使用Add()方法向mm内添加键aaa,则输出对应提示。
4)输出显示对象mm内的对应键值。
5)使用索引器来赋值ddd,如果键已经存在,那么就会修改对应的值。
6)使用索引器来赋值,如果键不存在则添加这个元素值。
7)使用索引器来获取值时,如果此键不存在则会引发异常,并输出对应提示。
8)通过TryGetValue()方法获取键值,如果不存在则输出对应的异常提示。
9)通过ContainsKey()方法进行插入判断,如已经存在则输出对应提示。
10)通过Remove()删除mm内指定的键值。
11)输出并显示各种操作后mm内的键值。
执行后将根据编写的操作方法对mm对象的键值进行操作处理,并输出显示处理后的对应数据,如图13-2所示。
图13-2 实例执行结果
在上述实例代码中,为了避免键值不存在所引发的异常,使用了异常处理机制对程序进行优化。
多学一招
泛型的最大优点是类型安全转换,值类型存储在堆栈上,引用类型存储在堆上。C#类是引用类型,结构是值类型。.NET很容易把值类型转换为引用类型,所以可以在需要对象(对象是引用类型)的任意地方使用值类型。例如,int可以赋予一个对象。从值类型转换为引用类型称为装箱。如果方法需要把一个对象作为参数,而且传送了一个值类型,装箱操作就会自动进行。另一方面,装箱的值类型可以通过拆箱操作转换为值类型。在拆箱时,需要使用类型转换运算符。
装箱和拆箱操作很容易使用,但性能损失比较大,迭代许多项时尤其如此。这时,就可以考虑使用泛型来高效、安全地实现功能。另外,泛型允许更好地重用二进制代码。泛型类可以定义一次,用许多不同的类型实例化。不需要像C++模板那样访问源代码。例如,System.Collections.Generic命名空间中的List<T>类用一个int、一个字符串和一个MyClass类型实例化:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。