泛型详解


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()
{
}