本文最后更新于 2019年 4月 20號(hào) 上午12點(diǎn) 52分,并同步發(fā)布于 :
各個(gè) C# 版本的主要特性箫攀、發(fā)布日期和發(fā)布方式
C# 8.0
待發(fā)布
Default Interface Methods: 缺省接口實(shí)現(xiàn)
-
More patterns in more places: 在更多位置中使用更多模式
- 模式匹配增強(qiáng)功能:
- Switch 表達(dá)式
- 屬性模式
- 元組模式
- 位置模式
- 模式匹配增強(qiáng)功能:
using declarations: using 聲明
Static local functions: 靜態(tài)本地函數(shù)
Disposable ref structs:可處置的 ref 結(jié)構(gòu)
Nullable reference types: 可為空引用類型
Asynchronous streams: 異步流
Indices and ranges: 索引和范圍
C# 7.3
2018 年 5 月隨 Visual Studio 2017 v15.7 發(fā)布
- Enabling more efficient safe code : 啟用更高效的安全代碼
- 索引
fixed
字段不需要進(jìn)行固定 - 可以重新賦值的
ref
局部變量 -
stackalloc
數(shù)組支持初始值設(shè)定項(xiàng) - 更多類型支持
fixed
語句 - 增強(qiáng)的泛型約束(支持
Enum
和Delegate
約束)
- 索引
- Make existing features: 提升了現(xiàn)有功能
- 元組支持
==
和!=
-
in
方法重載解析決勝屬性 - 擴(kuò)展
out
語法
- 元組支持
- New compiler options: 新的編譯器選項(xiàng)(
-publicsign
和-pathmap
)
C# 7.2
2017 年 11 月隨 Visual Studio 2017 v15.5 發(fā)布
- Safe efficient code enhancements: 安全高效的代碼的增強(qiáng)功能
- 針對(duì)實(shí)參的 in 修飾符庄蹋,指定形參通過引用傳遞壶愤,但不通過調(diào)用方法修改歇父。 將 in 修飾符添加到參數(shù)是源兼容的更改派草。
- 針對(duì)方法返回的 ref readonly 修飾符舱馅,指示方法通過引用返回其值,但不允許寫入該對(duì)象烧颖。 如果向某個(gè)值賦予返回值弱左,則添加 ref readonly 修飾符是源兼容的更改。 將 readonly 修飾符添加到現(xiàn)有的 ref 返回語句是不兼容的更改炕淮。 它要求調(diào)用方更新 ref 本地變量的聲明以包含 readonly 修飾符科贬。
- readonly struct 聲明,指示結(jié)構(gòu)不可變鳖悠,且應(yīng)作為 in 參數(shù)傳遞到其成員方法榜掌。 將 readonly 修飾符添加到現(xiàn)有的結(jié)構(gòu)聲明是二進(jìn)制兼容的更改。
- ref struct 聲明乘综,指示結(jié)構(gòu)類型直接訪問托管的內(nèi)存憎账,且必須始終分配有堆棧。 將 ref 修飾符添加到現(xiàn)有 struct 聲明是不兼容的更改卡辰。 ref struct 不能是類的成員胞皱,也不能用于可能在堆上分配的其他位置。
- Non-trailing named arguments: 非尾隨命名參數(shù)
- Leading underscores in numeric literals: 數(shù)值文字中的前導(dǎo)下劃線
- private protected access modifier: private protected 訪問修飾符
- Conditional ref expressions: 條件 ref 表達(dá)式
C# 7.1
2017 年 8 月隨 Visual Studio 2017 v15.3 發(fā)布
Async main:異步Main方法
Default expressions:default 表達(dá)式
Reference assemblies:引用程序集生成
Inferred tuple element names:推斷元組元素名稱
Pattern-matching with generics:
C# 7.0
2017 年 3 月隨 Visual Studio 2017 和 .NET Framework 4.7 發(fā)布
Out variables:out變量直接聲明九妈,例如可以out in parameter
Pattern matching:模式匹配
Tuples:元組
Deconstruction:元組解析
Discards:沒有命名的變量反砌,只是占位,后面代碼不需要使用其值
Local Functions:本地函數(shù)
Binary Literals:二進(jìn)制字面量
Digit Separators:數(shù)字分隔符
Ref returns and locals:引用返回值和局部變量
Generalized async return types:async中使用泛型返回類型
More expression-bodied members:允許構(gòu)造器萌朱、解析器宴树、屬性可以使用表達(dá)式作為body
Throw expressions:Throw可以在表達(dá)式中使用
C# 6.0
2015 年 7 月隨 Visual Studio 2015 和 .NET Framework 4.6 發(fā)布
Compiler-as-a-service (Roslyn)
Import of static type members into namespace:支持僅導(dǎo)入類中的靜態(tài)成員
Exception filters:異常過濾器
Await in catch/finally blocks:支持在catch/finally語句塊使用await語句
Auto property initializers:自動(dòng)屬性初始化
Default values for getter-only properties:設(shè)置只讀屬性的默認(rèn)值
Expression-bodied members:支持以表達(dá)式為主體的成員方法和只讀屬性
Null propagator (null-conditional operator, succinct null checking):Null條件操作符
String interpolation:字符串插值,產(chǎn)生特定格式字符串的新方法
nameof operator:nameof操作符晶疼,返回方法酒贬、屬性、變量的名稱
Dictionary initializer:字典初始化
C# 5.0
2012 年 8 月隨 Visual Studio 2012 和 .NET Framework 4.5 發(fā)布
Asynchronous methods:異步方法
Caller info attributes:調(diào)用方信息特性翠霍,調(diào)用時(shí)訪問調(diào)用者的信息
C# 4.0
2010 年 4 月隨 Visual Studio 2010 和 .NET Framework 4.0 發(fā)布
Dynamic binding:動(dòng)態(tài)綁定
Named and optional arguments:命名參數(shù)和可選參數(shù)
Generic co- and contravariance:泛型的協(xié)變和逆變
Embedded interop types (“NoPIA”):開啟嵌入類型信息锭吨,增加引用COM組件程序的中立性
C# 3.0
2007 年 11 月隨 Visual Studio 2008 和 .NET Framework 3.5 發(fā)布
Implicitly typed local variables:隱式類型本地變量
Object and collection initializers:對(duì)象和集合初始化器
Auto-Implemented properties:自動(dòng)屬性,自動(dòng)生成屬性方法寒匙,聲明更簡潔
Anonymous types:匿名類型
Extension methods:擴(kuò)展方法
Query expressions:查詢表達(dá)式
Lambda expression:Lambda表達(dá)式
Expression trees:表達(dá)式樹零如,以樹形數(shù)據(jù)結(jié)構(gòu)表示代碼,是一種新數(shù)據(jù)類型
Partial methods:部分方法
C# 2.0
2005 年 11 月隨 Visual Studio 2005 和 .NET Framework 3.0 發(fā)布
Generics:泛型
Partial types:分部類型锄弱,可以將類考蕾、結(jié)構(gòu)、接口等類型定義拆分到多個(gè)文件中
Anonymous methods:匿名方法
Iterators:迭代器
Nullable types:可以為Null的類型棵癣,該類可以是其它值或者null
Getter/setter separate accessibility:屬性訪問控制
Method group conversions (delegates):方法組轉(zhuǎn)換辕翰,可以將聲明委托代表一組方法,隱式調(diào)用
Co- and Contra-variance for delegates and interfaces:委托狈谊、接口的協(xié)變和逆變
Static classes:靜態(tài)類
Delegate inference:委托推斷,允許將方法名直接賦給委托變量\
C# 1.2
2003 年 4 月隨 Visual Studio 2003 和 .NET Framework 1.1 發(fā)布
- 當(dāng) IEnumerator 實(shí)現(xiàn) IDisposable 時(shí),foreach 循環(huán)中生成的代碼會(huì)在 IEnumerator 上調(diào)用 Dispose河劝。
C# 1.0
2002 年 1 月隨 Visual Studio 2002 和 .NET Framework 1.0 發(fā)布
Classes :面向?qū)ο筇匦员陂牛С诸愵愋?/p>
Structs:結(jié)構(gòu)
Interfaces:接口
Events:事件
Properties:屬性,類的成員赎瞎,提供訪問字段的靈活方法
Delegates:委托,一種引用類型牌里,表示對(duì)具有特定參數(shù)列表和返回類型的方法的引用
Expressions,Statements,Operators:表達(dá)式、語句务甥、操作符
Attributes:特性牡辽,為程序代碼添加元數(shù)據(jù)或聲明性信息,運(yùn)行時(shí)敞临,通過反射可以訪問特性信息
Literals:字面值(或理解為常量值)态辛,區(qū)別常量,常量是和變量相對(duì)的
---END---