一般差异在C#4.0已经以这样一种方式,它可以编写没有例外以下(这是C#3.0中会发生什么)来实现:一般差异在C#4.0
List<int> intList = new List<int>();
List<object> objectList = intList;
[例非功能性:参见乔恩斯基特的答案]
我最近参加了一个会议,其中乔恩斯基特给通用差异的很好的概述,但我不知道我完全得到它 - 我理解的意义的in
和out
关键词当谈到对立和协变时,但我很好奇幕后发生的事情。
当代码执行时,CLR看到了什么?它是否将List<int>
隐含地转换为List<object>
还是仅仅构建,我们现在可以在派生类型之间转换为父类型?
出于兴趣,为什么在之前的版本中没有介绍它,以及主要优点 - 即真实世界的用法?在这个post用于通用方差
更多信息(但问题是非常过时的,寻找真正的,向上的最新信息)
啊。我将不得不下载并观看上周六的例子,并亲自体验一下。当然,这个概念本身是有道理的 - 只是试图让我的头脑在真实世界中使用这个概念的思想。非常感谢回复。 – 2010-02-05 15:13:40
@丹尼尔:没问题 - 对不起,我明确没有在周六足够好的解释:)(当然有很多东西需要弥补......) – 2010-02-05 15:23:03
哦,这根本就不是那个乔恩 - 它全部移动了一点快,我还没有接触到C#4的任何新功能 - 我像疯子一样乱写笔记。看起来我必须订购第二版C#的深度:) – 2010-02-05 15:25:22