簡體   English   中英

是否有適用於.Net 3.5的C#4.0更改列表?

[英]Is there a list of changes for C#4.0 that work in .Net 3.5?

最近,我一直在看到許多C#4.0更改。 我真的很喜歡其中一些。 另外,出於兼容性原因,我現在還不想繼續使用.Net 4.0。

因此,是否有適用於.Net 3.5或更低版本的C#4.0語言新功能的完整列表?

例如,默認參數是否需要.NET 4.0 CLR,或者它們是編譯器功能? 可以使用自動屬性(C#3.0功能)並且仍然以.NET 2.0為目標,因為它不需要Framework支持,但是不使用LINQ表達式,因為它確實需要Framework 3.5。

請不要說“由於C#4.0較舊,因此它在.Net 3.5中當然無法工作”

4.0中的C#編譯器附帶了新的多目標功能。 簡短的版本是,它將使用定義System.Object的引用(通常為mscorlib.dll)中存在的元數據版本生成程序集。 這使您可以使用它來編譯2.0和3.5以及各種版本的Silverlight的程序集。 引入此功能是為了支持Visual Studio 2010中的多目標。

因此,只要對4.0庫沒有特別的依賴性,就可以使用C#4.0編譯器來編譯3.5程序集,並利用所需的任何C#4功能。 例如,命名參數和可選參數可以正常工作,因為它們不使用任何4.0框架功能。 但是,Dynamic確實如此,因此開箱即用在3.5上將不起作用。

這里有一篇關於此的文章,涵蓋了基礎知識。

http://blogs.msdn.com/ed_maurer/archive/2010/03/31/multi-targeting-and-the-c-and-vb-compilers.aspx

簡短列表(來自Ed的帖子)是:

  • 命名參數和可選參數
  • 某些COM語法的改進(例如,“省略引用”)
  • 通用方差

不起作用的事情包括動態和無偏誤(就實施它們而言,這是我們花費的最大兩個支出)。 前者需要框架支持,而后者則需要運行時支持。

我知道在CLR 2.0的類型參數中,IL注釋+和-對協方差和對數有一定的支持。 雖然不確定其他功能。

它不是一個列表,也不是絕對的,但是作為示例,我只是建立了一個針對.NET 3.5的新VS2010項目,並成功創建了帶有默認參數的方法,並使用命名參數調用了這兩個方法,這兩個都是C#4.0功能。

考慮到默認參數已經是VB.NET的功能,因此C#可能只是在編譯器級別實現了它。 但是,CLR團隊可以完全采用一種新方法來實現這一目標。

您應該准備好修改問題以聲明“ C#4.0的哪些功能是適用於.NET 3.5框架的編譯器更改”

我正在考慮對“舊”規范的更改... lock更改將不可用,因為這需要新的重載-但“類似字段的事件”更改 應該起作用。 我必須檢查編譯器發出的內容; -p

確實:

using System;
class Program
{
    public event EventHandler SomeHandler;
    static void Main() { }
}

獲取新型訪問器;-p

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM