.NET:为什么需要逆变和协变
2013-06-29 15:23
441 查看
为啥需要协变和逆变?
我目前想到的理由是:逆变和协变的目的是支持多态。一个小例子
不明白为啥输出的是false和true。using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InOutStudy { class Program { static void Main(string[] args) { IEnumerable<Base> list = new List<Child> { new Child() }; Console.WriteLine((typeof(ICollection<Base>)).IsAssignableFrom((typeof(List<Child>)))); IWorker<Child> woker = new Worker<Base>(); Console.WriteLine((typeof(IWorker<Child>)).IsAssignableFrom((typeof(Worker<Base>)))); } class Base { } class Child : Base { } } interface IWorker<in T> { void Dot(T t); } class Worker<T> : IWorker<T> { public void Dot(T t) { Console.WriteLine(t); } } }
备注
想到逆变和协变,我就有点头疼,用着还好!相关文章推荐
- 为什么.Net需要公共运行库,虚拟器,C#,XML,SOAP[网摘]
- 一起谈.NET技术,.NET中的异步编程(一)-为什么需要异步
- .net 为什么需要静态类?
- .“.NET研究”NET中的异步编程(一)-为什么需要异步
- .NET中的异步编程(一)-为什么需要异步
- 我们为什么需要AOP
- c#的windows service 为什么需要线程,老外的解释
- 深入浅出空间索引---(1)为什么需要空间索引
- 人人都要学一点深度学习(1)- 为什么我们需要它
- 为什么写Java程序需要接口
- 我们为什么需要校友录 如何利用“校友活动”功能组织一次精彩的校友聚会
- 安装.NET系统必备时出现提示系统检测到有程序需要重新启动计算机的解决方案
- 解析:TypedArray 为什么需要调用recycle()
- 企业为什么需要CRM?
- 12306在线买火车票为什么需要安装根证书
- 系统为什么需要分层
- 再说面试-为什么你需要知道多态
- 为什么一些机器学习模型需要对数据进行归一化?
- uboot链接脚本(为什么需要链接脚本)
- 雷军:为什么马云马化腾创业那么容易成功 自己却需要煎熬数年