《C#入门经典第七期》第十二章泛型书后总结
使用泛型类型
泛型类型需要一个或多个类型参数才能工作。声明变量时需要传递类型参数,应把逗号分隔的类型名列表放在尖括号中
可空类型
可空类型可使用指定值类型的任意值或null值。使用Nullable<T>或T?语法,可以声明可空类型的变量
??运算符
空接合运算符返回第一个操作数的值,如果第一个操作数是null,就返回第二个操作数的值
泛型集合
泛型集合内置了强类型化功能。可使用List<T>、Collection<T>和Dictionary<K,V>等集合类型,它们还提供了泛型接口。针对泛型集合进行排序和搜索,可以使用IComparer<T>和IComparable<T>接口
泛型类型的参数约束
在使用类型时约束可以提供的类型。可以根据基类、所支持的接口、是否必须是值类型或引用类型以及是否支持无参数的构造函数等,来约束类型参数。如果没有约束就必须使用default关键字来实例化泛型类型的变量
变体
变体是类似于多态性的一个概念,但应用于类型参数。它运行使用一个泛型类型替代另一个泛型类型,这些泛型类型仅在所使用的泛型类型参数上有所区别。协变允许在两种类型之间转换,其中目标类型有一个类型参数,是源类型的类型参数的基类。抗变允许进行相反的转换。协变类型参数用out参数定义,只能用作返回类型和属性get访问器的类型。抗变类型参数用in参数定义,只能用作方法的参数