泛型
本章内容
• 泛型的含义
• 如何使用.NET Framework提供的一些泛型类
• 如何定义自己的泛型
• 变体如何与泛型一起工作
C#第1版中最受诟病的一个方面是缺乏对泛型(generics)的支持。C++中的泛型(在该语言中称为模板)很早就公认为是完成任务的最佳方式。它可以在编译期间由一个类型定义派生出许多特定的类型,这节省了大量时间和精力。不知道是什么原因,泛型没有纳入C#的第1版,C#也因此受到很多批评。也许是因为泛型是一种很难掌握的技术,也许是开发人员觉得不需要泛型。幸好,C#2.0版中加入了泛型。泛型并不是真的很难掌握,只是需要用稍有不同的方式处理而已。
本章首先介绍泛型的概念,先学习抽象的泛型术语,因为学习泛型的概念对高效使用它是至关重要的。
接着讨论.NET Framework中的一些泛型类型,这有助于更好地理解其功能和强大之处,以及在代码中需要使用的新语法。然后定义自己的泛型类型,包括泛型类、接口、方法和委托。还要介绍进一步定制泛型类型的其他技术:default关键字和类型约束。
最后讨论协变(covariance)和抗变(contravariance),这是C#4引入的两种形式的变体,在使用泛型类时提供了更大的灵活性。