265得票8回答
泛型中的<out T>与<T>有什么区别?

&lt;out T&gt; 和 &lt;T&gt; 有什么区别?例如:public interface IExample&lt;out T&gt; { ... } 对比。public interface IExample&lt;T&gt; { ... }

247得票13回答
将List<DerivedClass>转换为List<BaseClass>

虽然我们可以继承基类/接口,但为什么不能使用相同的类/接口声明一个List&lt;&gt;?interface A { } class B : A { } class C : B { } class Test { static void Main(string[] args) ...

204得票8回答
为什么数组是协变的,而泛型是不变的?

来自 Joshua Bloch 的《Effective Java》: 数组与泛型在两个重要方面有所不同。首先,数组是协变的,而泛型是不变的。 协变只是意味着如果 X 是 Y 的子类型,则 X[] 也将是 Y[] 的子类型。数组是协变的,因为字符串是 Object 的子类型,所以 Stri...

198得票11回答
协变和逆变的现实世界例子

我有些难以理解在现实世界中如何使用协变性和逆变性。 到目前为止,我所看到的唯一示例都是相同的数组示例。 object[] objectArray = new string[] { "string 1", "string 2" }; 如果我能看到它在其他地方的使用情况,那么在我的开发过程中使用...

170得票6回答
协变和逆变的区别

我很难理解协变和逆变之间的区别。

165得票4回答
为什么协变和逆变不支持值类型

IEnumerable&lt;T&gt;是协变的,但它不支持值类型,只支持引用类型。以下简单代码可以成功编译:IEnumerable&lt;string&gt; strList = new List&lt;string&gt;(); IEnumerable&lt;object&gt; objL...

165得票3回答
协变、不变和逆变的解释(用通俗易懂的英语)?

今天我读了一些有关Java中协变、逆变(和不变性)的文章。我阅读了英文和德文维基百科文章,以及IBM的一些博客帖子和文章。 但是我仍然有点困惑这些到底是关于什么?有些人说这是关于类型和子类型之间的关系,有些人说这是关于类型转换,还有一些人说它用于决定方法是覆盖还是重载。 因此,我正在寻找一...

164得票7回答
从x到y的协变数组转换可能会导致运行时异常。

我有一个private readonly列表,其中包含LinkLabels(IList&lt;LinkLabel&gt;)。我稍后会将LinkLabel添加到这个列表中,并将这些标签添加到FlowLayoutPanel中,如下所示:foreach(var s in strings) { ...

148得票4回答
为什么这个示例无法编译,即协变、逆变和不变性如何工作?

在这个问题的基础上,有人能解释一下Scala中以下内容吗: class Slot[+T] (var some: T) { // DOES NOT COMPILE // "COVARIANT parameter in CONTRAVARIANT position" } ...

123得票9回答
什么是协变返回类型?

在Java中,协变返回类型是什么?在面向对象编程中呢?