奇怪的問題...協方差還在3.5/2.0?
我從例子中實現了協方差。
我的目標FW是4.0。
如何。我想看看它是否在3.5/2失敗 - >但它不會。
它不能是因爲協方差是從FW4.0。
改爲3.0後,我建立和看到:(+在運行時不會失敗)
奇怪的問題...協方差還在3.5/2.0?
我從例子中實現了協方差。
我的目標FW是4.0。
如何。我想看看它是否在3.5/2失敗 - >但它不會。
它不能是因爲協方差是從FW4.0。
改爲3.0後,我建立和看到:(+在運行時不會失敗)
協方差框架3的支持,但沒有實現編譯器。您正在使用的編譯器4目標框架3.
這是在埃裏克利珀博客文章中提到,我去看看我能找到它..
編輯
爲了進一步澄清,:通用語言運行時和C#編譯器(csc.exe)是兩個獨立的東西。在2.0版引入CLR的協變和反變量。他們直到版本4才被引入到C#中。您正在使用Compiler 4來構建版本3 IL,這就是它的工作原理。
我該如何讓它失敗? – 2012-02-09 12:05:12
使用.NET 3.0或3.5編譯器。 – 2012-02-09 12:06:18
我應該卸載fw4嗎?是否有任何配置工作在清潔模式3.0? – 2012-02-09 12:07:11
自2.0版本以來,CLR支持協變和逆變類型參數。它只是C#語言,直到版本4才提供任何語法。
我不明白如何在fw2中支持它。從我讀的地方開始,它的編號爲4. – 2012-02-09 12:13:13
包括C#在內的所有.NET語言都被轉換爲相同的中間語言IL(類似於CLR的彙編語言)。現在,IL支持許多功能(如協變和反變換),但並非所有語言都提供使用它們的語法。在版本4中添加了C#中使用此功能的語法。 – Botz3000 2012-02-09 12:16:22
因此我無法讓它失敗嗎? (即使我使用2.0的csc.exe?)作爲myles回答? – 2012-02-09 12:18:35
嘗試使用編譯器的框架2.0(3.5)版本,而不是4.0編譯器。 – 2012-02-09 12:07:02
@TetsujinnoOni沒有改變目標FW就像在指定的目標工作? – 2012-02-09 12:08:11
公共語言運行時和C#編譯器(csc.exe)是兩個獨立的東西。在2.0版引入CLR的協變和反變量。他們直到版本4才被引入到C#中。您正在使用Compiler 4來構建版本3 IL,這就是它的工作原理。 – 2012-02-09 12:30:14