c# - how - visual studio install.net framework
C#的正確版本號是什麼? (6)
C#的正確版本號是什麼? 什麼時候出來? 為什麼我找不到關於C#3.5的答案?
這個問題主要是為了幫助那些使用不正確的版本號搜索答案的人,例如C#3.5 。 希望是任何未能找到錯誤版本號的答案的人都會找到這個問題,然後再使用正確的版本號進行搜索。
C#語言版本歷史:
這些是在撰寫本文時已知的C#版本 :
- 使用.NET 1.0和VS2002發布的C#1.0 (2002年1月)
- C#1.2 (奇怪的是); 與.NET 1.1和VS2003一起發布(2003年4月)。 在
IEnumerator
上調用Dispose
第一個版本,它實現了IDisposable
。 其他一些小功能。 - C#2.0隨.NET 2.0和VS2005發布(2005年11月)。 主要新功能:泛型,匿名方法,可空類型,迭代器塊
- 隨.NET 3.5和VS2008發布的C#3.0 (2007年11月)。 主要新功能:lambda表達式,擴展方法,表達式樹,匿名類型,隱式類型(
var
),查詢表達式 - C#4.0隨.NET 4和VS2010發布(2010年4月)。 主要新功能:後期綁定(
dynamic
),委託和接口通用方差,更多COM支持,命名參數,元組數據類型和可選參數 - C#5.0隨.NET 4.5和VS2012一起發布(2012年8月)。 主要功能 :異步編程,來電信息屬性。 突破變化: 循環變量閉包 。
- C#6.0隨.NET 4.6和VS2015一起發布(2015年7月)。 由Roslyn實施。 Features :自動實現屬性的初始化程序,使用指令導入靜態成員,異常過濾器,元素初始值設定項,
await
catch
,finally
,擴展在集合初始值設定項中Add
方法。 - .NET 4.7和VS2017發布的C#7.0 (2017年3月)主要新功能 : tuples , ref本地和ref返回 , 模式匹配 (包括基於模式的switch語句), 內聯參數聲明 , 本地函數 , 二進製文字,數字分隔符 ,和任意異步返回 。
- 隨VS2017 v15.3發布的C#7.1 (2017年8月)新功能: 異步主 , 元組成員名稱推斷 , 默認表達式 , 與泛型的模式匹配 。
- 隨VS2017 v15.5發布的C#7.2 (2017年11月)新功能: 私有保護訪問修飾符 , Span <T>,又名內部指針,又名stackonly結構 , 其他所有內容 。
- 隨VS2017 v15.7(2018年5月)發布的C#7.3 。 新功能: 枚舉,委託和
unmanaged
泛型類型約束 。ref
重新分配。 不安全的改進:stackalloc
初始化,未固定的索引fixed
緩衝區,自定義fixed
語句。 改進了重載分辨率。 初始化器和查詢中的表達式變量。==
和!=
為元組定義。 現在,屬性可以定位自動屬性的支持字段。 - C#8.0目前處於預覽狀態。 預期的新功能 : 非可空引用類型 ,
IAsyncEnumerable<T>
支持,範圍和默認接口方法。
針對OP的問題:
C#的正確版本號是什麼? 什麼時候出來? 為什麼我找不到關於C#3.5的答案?
沒有C#3.5這樣的東西 - 這裡引起混淆的原因是.NET 3.5中存在C#3.0。 然而,語言和框架是獨立版本的 - 就像CLR一樣,.NET 2.0到.NET 2.0版本為2.0,.NET 4引入了CLR 4.0,儘管服務包也是如此。 .NET 4.5中的CLR有各種改進,但版本控制還不清楚:在某些地方它可能被稱為CLR 4.5(例如, 這個MSDN頁面用於指代它),但Environment.Version
屬性仍然報告4.0.xxx。
有關語言,運行時和框架版本之間關係的更多詳細信息,請參閱深度網站中的C# 。 這包括有關在面向.NET 2.0時可以使用哪些C#3.0功能的信息。 (如果有人想將所有內容都納入此維基答案,歡迎他們參加。)
截至2017年5月3日,C#語言團隊在其github repo上創建了C#版本和功能的歷史: C#語言版本中添加的功能 。 還有一個頁面可以跟踪即將推出的和最近實現的語言功能 。
VERSION _____
語言規範______
MICROSOFT編譯器
C# 1.0 / 1.2 ____
2001年12月? / 2003 ? ___________
2002年1月?
C#2.0 _______
2005年9月 ________________
2005 年 11月?
C#3.0 _______
2006年5月 _____________________
2006 年 11月?
C#4.0 _______
2009年3月(草案) ______________
2010年4月?
C#5.0; 於2012年8月與.NET 4.5一起發布
C#6.0; 隨.NET 4.6 2015發布
C#7.0; 隨.NET 4.7 2017發布
您可以在here查看最新的C#版本
我已經總結了這個表中的大多數版本。 唯一缺少的應該是ASP.NET Core版本。 我還添加了不同版本的ASP.NET MVC。
請注意,ASP.NET 5已更名為ASP.NET Core 1.0,ASP.NET MVC 6已更名為ASP.NET Core MVC 1.0.0。 我相信這種變化發生在2016年1月左右。
我在表中包含了ASP.NET 5 RC1的發布日期,但我還沒有包含ASP.NET核心1.0和其他核心版本,因為我找不到確切的發布日期。 您可以在此處閱讀有關ASP.NET Core的發布日期的更多信息: ASP.NET Core 1.0(ASP.NET 5 / vNext)何時計劃發布?
處理C#的版本號時最大的問題是它與.NET Framework的版本無關,它似乎是由於Visual Studio和.NET Framework之間的同步版本。
C#的版本實際上綁定到編譯器,而不是框架。 例如,在Visual Studio 2008中,您可以編寫C#3.0並以.NET Framework 2.0,3.0和3.5為目標。 C#3.0命名法描述了代碼語法的版本和支持的功能,與ANSI C89,C90,C99描述C的代碼語法/功能的方式相同。
看看Mono ,你會發現Mono 2.0(主要是從ECMA規範實現的.NET Framework 2.0版本)支持C#3.0語法和功能。
這與大多數答案相同,但是為了方便而製表,並且它具有Visual Studio和.NET版本以實現完整性。
╔════════════╦════════════╦══════════════╦═════════════╦══════════════╗
║ C# version ║ VS version ║ .NET version ║ CLR version ║ Release date ║
╠════════════╬════════════╬══════════════╬═════════════╬══════════════╣
║ 1.0 ║ 2002 ║ 1.0 ║ 1.0 ║ Feb 2002 ║
║ 1.2 ║ 2003 ║ 1.1 ║ 1.1 ║ Apr 2003 ║
║ 2.0 ║ 2005 ║ 2.0 ║ 2.0 ║ Nov 2005 ║
║ ║ ║ 3.0 ║ 2.0 ║ Nov 2006 ║
║ 3.0 ║ 2008 ║ 3.5 ║ 2.0 ║ Nov 2007 ║
║ 4.0 ║ 2010 ║ 4.0 ║ 4 ║ Apr 2010 ║
║ 5.0 ║ 2012 ║ 4.5 ║ 4 ║ Aug 2012 ║
║ 5.0 ║ 2013 ║ 4.5.1 ║ 4 ║ Oct 2013 ║
║ ║ ║ 4.5.2 ║ 4 ║ May 2014 ║
║ 6.0 ║ 2015 ║ 4.6 ║ 4 ║ Jul 2015 ║
║ ║ ║ 4.6.1 ║ 4 ║ Nov 2015 ║
║ ║ ║ 4.6.2 ║ 4 ║ Aug 2016 ║
║ 7.0 ║ 2017 ║ ║ ║ Mar 2017 ║
║ ║ ║ 4.7 ║ 4 ║ May 2017 ║
║ 7.1 ║ 2017(v15.3)║ ║ ║ Aug 2017 ║
║ ║ ║ 4.7.1 ║ 4 ║ Oct 2017 ║
║ 7.2 ║ 2017(v15.5)║ ║ ║ Dec 2017 ║
║ ║ ║ 4.7.2 ║ 4 ║ Apr 2018 ║
║ 7.3 ║ 2017(v15.7)║ ║ ║ May 2018 ║
╚════════════╩════════════╩══════════════╩═════════════╩══════════════╝
注意:.NET開發現在幾乎與VS無關,每個版本之間沒有相關性。 有關更多信息,請參閱“ .NET Framework版本和依賴項 ”。