2017-03-08 64 views
39

運行C#7的最低.NET框架和CLR版本要求是什麼?另外,我是否需要VS 2017來編譯C#7?C#7 .NET/CLR/Visual Studio版本要求

+1

任何.NET版本4.6.x都可以。 Roslyn是開源的,所以任何事情都是可能的。如果你想讓別人爲你做,那麼下載VS2017。它昨天發佈。社區版是免費的。 –

回答

74

你不需要瞄準.NET 4.6及以上版本,這是不正確的。要使用元組,您需要System.ValueTuple NuGet包。右邊https://www.nuget.org/packages/System.ValueTuple/你可以看到它說它支持4.5及以上,實際上,它支持4.0及以上。如果你想變得瘋狂,如果你創建了自己的System.ValueTuple類,它完全可以做到這個包,它可以在.NET 3.5上工作,也可能會老一些。對於「類任務」類型,您還需要一個NuGet包,https://www.nuget.org/packages/System.Threading.Tasks.Extensions/。根據其文檔,此軟件包也適用於.NET 4.5及更高版本。

其他C#7功能將在.NET 2及更高版本上工作,因爲它們只是語法糖。舉例來說,我只是寫了下面的.NET 2.0和它正確地拋出:

static void Main(string[] args) 
    { 
     string test = null; 
     string d = test ?? throw new ApplicationException("test"); 
    } 

同樣,int.TryParse("123", out int i);作品就好在.NET 2.0。我沒有測試每一個C#7的功能,但總的來說,除了元組(除了元組以外,還有它們的相關特性,如解構),它應該在.NET 2.0及更高版本中工作,因爲它大部分只是語法糖。話雖如此,是的你需要VS2017來編譯C#7。我確信在某些時候,其他編譯器將支持C#7,但不是今天。

特點我在.NET 2.0確認工作:

  • 二進制文字
  • 位分隔符
  • 在線out參數
  • 使用_放棄了參數
  • 本地功能
  • 類型基於模式的匹配if (obj is int i)case int i:
  • 常數模式匹配if (i is 2)
  • 瓦爾模式匹配if (i is var j)
  • 價返回
  • 擲表達式
  • 表達健全getter和setter
  • 表達健全構造函數和終結
+1

爲什麼downvote?什麼是我的答案不準確? – dman2306

+1

Upvote from me,but it's worth reading [this answer](http://stackoverflow.com/a/42675652/7122),因爲新的異步功能也需要nuget包。 –

+0

@DavidArno謝謝你,忘記了這個功能。我更新了包含關於該塊包的信息。不幸的是,對於C#7來說,「考慮到了」這麼多事情,很難找到VS2017的發行說明似乎不完整的實現列表,只提到最大的功能增加。 – dman2306

1

要使用C#7開箱即用的全部功能(不需要引用nugets等),你需要VS 2017和.Net 4.7作爲目標框架。