考慮一個類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 。 –
嗯,你說得對。那麼我想這件事就在同一條毯子下。 –
我通常從波特蘭水泥和水的混合物中回收混凝土。也許你可以編輯你的標題更具描述性。 –