泛型详解
1.什么是泛型?
泛型是.net framework 2.0 升级CLR出现的。泛型就是在有相同行为,不同参数类型的时候用到。
2.泛型的基本语法和使用
///
/// 泛型类
///
/// T 是占位符
public class GenericClass
{
}
///
/// 泛型方法
///
/// T 是占位符
/// 类型参数
///
public T Get(T t)
{
return default(T);
}
///
/// 泛型委托
///
/// T 是占位符
/// 类型参数
///
public delegate T GetDelegate(T t);
///
/// 泛型接口
///
/// 占位符
public interface GenericInterface
{
}
3.泛型约束
3.1.基类约束(where T:BaseClass)
///
/// 父类
///
public class Father
{
public int Id { get; set; }
public string Name { get; set; }
}
///
/// 子类
///
///
///
public void Show(T t) where T: Father
{
Console.WriteLine($"{t.Name},{t.Id}");
}
3.2.接口约束(where T:IInterface)
///
/// 泛型接口
///
/// 占位符
public interface GenericInterface
{
}
///
/// 泛型类
///
/// T 是占位符
public class GenericClass where T: GenericInterface
{
}
3.3.引用类型约束(where T:class)
///
/// 泛型类
///
/// T 是占位符
public class GenericClass where T:class
{
}
3.4.值类型约束(where T:struct)
///
/// 泛型类
///
/// T 是占位符
public class GenericClass where T:struct
{
}
3.5.无参数构造函约束(where T:new()) 注意:如果有多个约束,无参数构造函约束必须放在约束的最后面
///
/// 泛型类
///
/// T 是占位符
public class GenericClass where T:new()
{
}