这篇,也是刘铁猛老师的最后完结课程了
泛型(generic) 它无处不在
- 为什么需要泛型:避免成员膨胀或者类型膨胀
- 正交性:泛型类型(类/接口/委托/…)、泛型成员(属性/方法/字段/…)
- 类型方法的参数推断
- 泛型与委托,lambda表达式
泛型的全称应该是,泛化的数据类型。是泛泛而谈的,比如我喜欢听音乐,那么音乐就是一个泛型的。而如果我要去听音乐,我就得选择一个具体的音乐,比如流行乐和古典乐
为了避免类型膨胀和成员膨胀
class Program
{
static void Main(string[] args)
{
Apple apple = new Apple() {
Color = "Green" };
Book book = new Book() {
Name = "Father" };
Box<Apple> box1 = new Box<Apple>() {
Cargo = apple };
//这里在尖括号里写了类名Apple,就是用Apple这个类型替换了下面的TCargo类型
//所有泛型编程实体都不能直接编程,想要实现泛型实体之前,都需要先对其进行刻画
Box<Book> box2 = new Box<Book>() {
Cargo = book };
Console.WriteLine(box1.Cargo.Color);
}
}
class Book
{
public string Name {
get; set; }
}
class Apple
{
public string Color {
get; set; }
}
class Box<TCargo>
//在类后加上了尖括号,就是泛型类了。在尖括号里写的就是类型参数。这个参数就是泛化类,也就是刚刚例子中我喜欢听音乐的音乐