4
可能重複:
Why isn't there generic variance for classes in C# 4.0?爲什麼不能將OUT通用修飾符應用於類以及接口?
實施例:
interface foo<out T> where T : BaseThing { }
編譯
class foo<out T> where T : BaseThing { }
沒有。
這僅僅是不被支持,或者有一些原因,爲什麼它永遠不會工作或不合邏輯?
編輯:這就是我想要做的,以防有人想知道...
class BaseThing { }
class DerivedThing : BaseThing { }
class foo<out T> where T : BaseThing { }
class bar : foo<DerivedThing> { }
private void test()
{
foo<BaseThing> fooInstance = new bar();
}
那麼,[文檔](http://msdn.microsoft.com/en-us/library/dd469487)說'out'只支持接口和委託。至於爲什麼這樣設計,我相信Eric Lippert最終會看到這個問題並給你一個全面的答案(沒有足夠的用例,或者所有的用例都不常見......)。 – Oded 2012-08-10 19:04:38