List<A>转型为List<B>

假设现在有两个类—— A 和 B ,其中 A 是 B 的子类。将 A(子类)的引用转换为 B(父类)的引用是很普通的事,在任何编程语言中都不存在问题。但是将 List<A> (子类的容器)转换成 List<B> (父类的容器)就不是那么简单的事情了,因为 List<B> 并不是 List<A> 的父类。

不过从 .NET 4.0起,我们已经可以在 C# 中写

List<Base> baseList = new List<Derived>(); 

这样的代码了。这是因为 .NET 4.0 支持 C# 的变体范型(variance for generic type parameters)特性。关于其具体信息可以在网上搜索“C# 协变 逆变”。协变的英文是 Covariance,逆变的英文是 Contravariance。

如果想在 Unity 中使用这个特性的话,就要将 Unity 用的 .NET 运行时改为4.0以上。方法是将 Project Setting -> Player -> Scripting Runtime Version 改成 Experimental (.NET 4.6 Equivalent)。

本文在我的独立博客上的地址:http://zxtechart.com/2018/09/02/cast-list-a-to-list-b/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值