109得票2回答
C# 4.0中如何实现通用协变和逆变?

我没有参加2008年的PDC,但是我听说C# 4.0宣布支持泛型协变和逆变。也就是说,List<string>可以被赋值给List<object>。这是怎么做到的? 在Jon Skeet的书《C#深度剖析》中,解释了为什么C#泛型不支持协变和逆变。主要是为了编写安全的...

20得票2回答
为什么C#不支持变体泛型类?

请看这个简单的LINQPad示例: void Main() { Foo<object> foo = new Foo<string>(); Console.WriteLine(foo.Get()); } class Foo<out T> {...

19得票3回答
自定义Autofac的组件解析 / 泛型协变/逆变问题

首先,抱歉标题比较模糊,我无法想出更加精确的标题。 以下是这些类型: { TCommand : ICommand } «interface» ...

16得票3回答
C# 4.0 中的泛型变异

在C# 4.0中,泛型的协变性被实现得这么好,以至于可以写出下面的代码而不会抛出异常(相对于C# 3.0来说): List<int> intList = new List<int>(); List<object> objectList = intList;...

11得票3回答
逆变/协变在使用 Func<in T1, out TResult> 作为参数时的应用

假设我有这样一个接口:public interface IInterface&lt;in TIn, out TOut&gt; { IInterface&lt;TIn, TOut&gt; DoSomething(TIn input); } TIn是反变的,而TOut是协变的。现在,我希望调用...

11得票1回答
如何确定类型参数的变异性?

受Scala中协变和逆变的实际例子启发,我想提出一个更好的问题: 在设计库时,当确定类型参数应该是协变还是逆变时,您应该问自己一组特定的问题吗?还是应该将所有内容都设置为不变,然后根据需要进行更改?

11得票3回答
为什么类类型参数的方差必须与其方法的返回/参数类型参数的方差匹配?

以下内容引起投诉:interface IInvariant&lt;TInv&gt; {} interface ICovariant&lt;out TCov&gt; { IInvariant&lt;TCov&gt; M(); // The covariant type parameter...

7得票2回答
为什么Kotlin不允许协变的mutablemap成为委托?

我是Kotlin的新手。 当我学习在Map中存储属性时,我尝试了以下用法。 class User(val map: MutableMap&lt;String, String&gt;) { val name: String by map } class User(val map:...