019 泛型
2016-06-13 15:59:50 0 举报
AI智能生成
泛型是编程中的一种特性,它允许程序员在设计程序时使用一种通用的类型,而不是具体的类型。这种特性可以提高代码的复用性和可读性。例如,我们可以创建一个泛型类,这个类可以处理任何类型的数据,而不仅仅是一种特定的数据类型。同样,我们也可以使用泛型方法,这种方法可以接受任何类型的参数,而不仅仅是一种特定的参数类型。泛型的优点是可以减少代码的冗余,提高代码的灵活性和可维护性。但是,泛型也有其缺点,例如可能会增加程序的复杂性,使得调试和维护变得更加困难。
作者其他创作
大纲/内容
C#中的泛型
概念:提供一种更准确地使用有一种以上的类型的代码的方式。它允许我们声明类型参数化的代码,可以用不同的类型进行实例化
5种泛型
类
结构
接口
委托
方法
声明泛型类和简单类的区别
在类名之后放置一组尖括号
在尖括号中用逗号分隔的占位符字符串来表示希望提供的数据的类型(类型参数)
在泛型类声明的主体中使用类型参数来表示应该被替代的类型
创建构造类型
不能直接从泛型类型创建类对象
首先从泛型类构建类类型,列出类名字并在尖括号中提供正式类型来替代类型参数。要替代类型参数的真实类型叫做类型实参
然后编译器接收了类型实参并且替换泛型类主题中的相应类型参数,产生了构造类型-从它创建真实类型的实例
类型参数的约束
定义:要让泛型变得更有用,需要提供额外的信息让编译器知道参数可以接受哪些类型。这些额外的信息叫做约束(Constrain)。只有符合约束的实参才能用于类型参数
where子句
约束使用where子句列出
每个有约束的类型参数有自己的where子句
如果形参有多个约束,它们在where子句中使用逗号分隔符
要点:
它们在类型参数泪飙的关闭尖括号之后列出
它们不适用逗号或者其他符号分隔
它们可以以任何次序列出
where是上下文关键词,所以可以在其他上下文中使用
约束类型和次序
类名: 只有这个类型的类或从它继承的类才能用作类型实参
class:任何引用类型,包括类、数组、委托和接口都可以用作实参
struct:任何类型都可以被用作类型实参
Interfacename:只有这个接口或实现这个接口的类型才能用作实参
new():任何带有无参公共构造函数的类型都可以用作实参。这叫做构造函数约束
约束测序:
最多只能有一个主约束,如果有必须凡在第一位
可以有任意多的InterfaceName约束
如果存在构造函数约束,则必须放在最后
泛型结构
泛型方法
泛型方法
与其他泛型不一样,方法是成员,不是类型
泛型方法可以在泛型和非泛型类以及结构和接口中声明
声明泛型方法:
泛型方法和泛型委托相似,有两个参数列表
封闭在圆括号内的方法参数leibiao
封闭在尖括号类的类型参数列表
要声明泛型方法
在方法名称和方法参数列表之前放类型参数列表
在方法参数列表后方可选的约束子句
扩展方法和泛型类
必须声明为static
必须是静态类的成员
第一个参数类型中必须有关键词this,后面是扩展的泛型类的名字
0 条评论
下一页