考虑一个类Foo
,它完全实现了IFoo
。 同时,考虑任务Task<IFoo>
。将具体任务<TImplementation>分配给类型变量任务<TInterface>
为什么当调用以下内容时会引发编译错误;
Task<IFoo> task = Task.Factory.StartNew(() => new Foo());
编译器说,它不能从源类型Task<Foo>
转换为Task<IFoo>
。虽然这是有道理的,因为它们本质上是两种不同的类型,是否不会与IList<IFoo> list = new List<IFoo>{new Foo(/* construct */)};
或其他类似的分配属于同一前提?
此刻我强制演员进入界面,但这种感觉并不合适。
你的反例是不计。列表也不能被分配给IList 。 –
嗯,你说得对。那么我想这件事就在同一条毯子下。 –
我通常从波特兰水泥和水的混合物中回收混凝土。也许你可以编辑你的标题更具描述性。 –