c#-泛型、协变、逆变
2021-01-27 00:13
标签:stat 介绍 new 为什么 style 支持 入参 编译 引用类型 泛型简单介绍: 可以使用泛型声明的元素:类、接口、方法、委托 泛型之前: 泛型约束: 约束种类: 协变逆变: 协变逆变只能放在接口或委托中使用 个人理解:协变逆变可以使我们的代码更灵活,帮我们做了类型转换操作。协变是子类转父类;逆变是父类转子类。 协变(out):修饰返回值,泛型只能出现在成员的返回类型上,不能做传入参数 协变案例: 逆变与协变相反,是父类转换子类,使用in关键字。泛型类型只能出现在传入参数上 逆变案例: c#-泛型、协变、逆变 标签:stat 介绍 new 为什么 style 支持 入参 编译 引用类型 原文地址:https://www.cnblogs.com/fanfan-90/p/11963741.html
泛型之前使用object封装不同类型的参数,缺点:性能差、运行时判断类型(不安全)...
泛型是在编译期间转为实际类型副本,所以性能好,还可以使用约束对泛型进行约束
约束泛型类型必须满足约束。使用泛型约束后,可以像使用约束类型的方式使用泛型变量
where T:class//引用类型约束
where T:new()//无参构造函数约束,加了此约束后可以使用无参构造函数创建实例:T t = new T();
where T:类//具体类或其子类约束
where T:接口//具体接口或其子类约束
where T:struct//值类型约束 public class Bird
{
public string ID { get; set; }
}
public class Sparrow : Bird
{
public string Name { get; set; }
}
static void Main(string[] args)
{
Bird bird = new Sparrow();//正确,一只麻雀就是一只鸟
List
//为什么下面这个没有报错
IEnumerable public interface ICustomerEnumerablein T>
{
}
public class CustomerEnumerable
上一篇:C#封装继承