本篇介绍泛型
泛型将类型参数的概念引入 .NET,这样就可设计具有以下特征的类和方法:在客户端代码声明并初始化这些类或方法之前,这些类或方法会延迟指定一个或多个类型。
泛型类和泛型方法兼具可重用性、类型安全性和效率,这是非泛型类和非泛型方法无法实现的。
在C#1.0中的冗长代码因为泛型而大大的改善
泛型可以在设计一个类或方法时,将类型作为参数来传入
提高了代码的复用性、安全性并且还提高了性能
这些也是泛型的特点
在使用泛型的时候我们还可以为泛型添加约束来进行设计
泛型约束就是使用where来添加约束条件的的
public class Singleton<T> where T : Singleton<T>{
//...
}
这是一个单例基类的泛型约束写法
在我们使用继承来定义一个单例类的时候
可以保证Singleton中传入的T是继承了Singleton的
在实际使用中,如果不是设计底层逻辑或者要做框架和库
只是写一些逻辑层和UI层的话
基本上掌握List 和 Dictionary 这些API的使用也就够了
但是如果要做框架和库或者做一些通用的底层逻辑
掌握泛型来做API就必不可少了
通常我们需要设计的泛型API有:
public interface Base<T> where T : Base<T>
{
T Value { get; set; }
}
public class Singleton<T> where T : Singleton<T>
{
//...
}
public void Fun<T>(T args) where T: struct
{
Debug.Log(args);
}
public delegate void dele<T>(T args);
而他们可以与泛型反射配合使用
var type = typeof(T);