下面列出了在曾經版別的C#言語和VisualStudio.NET中引進的主要功用。
一、C#1.0特性----第1個版別,編程言語最根底的特性,對應於VisualStudio.NET2002
Classes:面向對象特性,支撐類類型
Structs:結構
Interfaces:接口
Events:事情
Properties:特色,類的成員,供給拜訪字段的靈活辦法
Delegates:託付,一種引證類型,代表對具備特定參數列表和回來類型的辦法的引證
Expressions,Statements,Operators:表達式、句子、操做符
Attributes:特性,爲程序代碼添加元數據或聲明性信息,運行時,通過反射可以拜訪特性信息
Literals:字面值(或理解爲常量值),區別常量,常量是和變量相對的
(1)C#1.1,一個小版別的更新,對應於VisualStudio.NET2003
#line?雜注和xml文檔註釋。
二、C#2特性(VS2005)
Generics:泛型
Partialtypes:分部類型,可以將類、結構、接口等類型界說拆分到多個文件中
Anonymousmethods:匿名辦法
Iterators:迭代器
Nullabletypes:可認爲Null的類型,該類可以是其它值或者null
Getter/setterseparateaccessibility:特色拜訪操控
Methodgroupconversions(delegates):辦法組轉化,可以將聲明託付表明一組辦法,隱式調用
Co-andContra-variancefordelegatesandinterfaces:託付、接口的協變和逆變
Staticclasses:靜態類
Delegateinference:託付揣度,容許將辦法名直接賦給託付變量
三、C#3特性(VS2008)
Implicitlytypedlocalvariables:
Objectandcollectioninitializers:對象和調集初始化器
Auto-Implementedproperties:主動特色,主動生成特色辦法,聲明更簡練
Anonymoustypes:匿名類型
Extensionmethods:擴展辦法
Queryexpressions:查詢表達式
Lambdaexpression:Lambda表達式
Expressiontrees:表達式樹,以樹形數據結構代表代碼,是一種新數據類型
Partialmethods:部分辦法
本地?var?類型推理
言語集成查詢(LINQ)
四、C#4特性(VS2010)
Dynamicbinding:動態綁定
Namedandoptionalarguments:命名參數和可選參數
Genericco-andcontravariance:泛型的協變和逆變
命名自變量
Embeddedinteroptypes(「NoPIA」):開啓嵌入類型信息,增長引證COM組件程序的中立性
五、C#5特性(VS2012)
Asynchronousmethods(async??await):異步辦法
Callerinfoattributes:調用方信息特性,調用時拜訪調用者的信息
(1)中心有一個小的更新,VisualStudio.NET2013:
此版別的VisualStudio包含.NETCompilerPlatform(「Roslyn」)的Bug修正、功用改進和技能預覽,Roslyn是?.NETCompilerPlatformSDK?的前身。
六、C#6特徵(VS2015,.NetCore1.0)
Compiler-as-a-service(Roslyn)
Importofstatictypemembersintonamespace:支撐僅導入類中的靜態成員
Exceptionfilters:反常過濾器
Awaitincatch/finallyblocks:支撐在catch/finally句子塊運用await句子
Autopropertyinitializers:主動特色初始化
Defaultvaluesforgetter-onlyproperties:設置只讀特色的默認值
Expression-bodiedmembers:支撐以表達式爲主體的成員辦法和只讀特色
Nullpropagator(null-conditionaloperator,succinctnullchecking):Null條件操做符
Stringinterpolation:字符串插值,發生特定格式字符串的新辦法
nameofoperator:nameof操做符,回來辦法、特色、變量的稱號
只讀主動特色
主動特色初始化表達式
Expression-bodied函數成員
usingstatic
Null條件運算符
字符串內插
反常篩選器
nameof?表達式
Catch和Finally塊中的Await
運用索引器初始化相關調集
調集初始值設定項中的擴展?Add?辦法
改進了重載解析
Dictionaryinitializer:字典初始化
七、C#7特徵(VisualStudio2017,.NetCore1.0)
Outvariables:out變量直接聲明,例如可以outinparameter
Patternmatching:形式匹配,依據對象類型或者其它特色完成辦法派發
Tuples:元組
Deconstruction:元組解析
Discards:沒有命名的變量,僅僅佔位,後面代碼不須要運用其值
LocalFunctions:部分函數
BinaryLiterals:二進制字面量
DigitSeparators:數字分隔符
Refreturnsandlocals:引證回來值和部分變量
Generalizedasyncreturntypes:async中運用泛型回來類型
Moreexpression-bodiedmembers:容許結構器、解析器、特色可以運用表達式做爲body
Throwexpressions:Throw可以在表達式中運用
out?變量
元組
棄元
形式匹配
ref?部分變量和回來結果
本地函數
更多的expression-bodied成員
throw?表達式
通用的異步回來類型
數字文本語法改進
(1)C#7.1特徵(VisualStudio2017version15.3,.NETCore2.0)
Asyncmain:在main辦法用async方式,即asyncmain辦法
Defaultexpressions:引進新的字面值default
Referenceassemblies:
Inferredtupleelementnames:揣度元組元素稱號
Pattern-matchingwithgenerics:泛型的類型參數形式匹配
編譯器有?-refout?和?-refonly?兩個選項,可用於操控引證程序集生成。
(2)C#7.2特徵(VisualStudio2017version15.5,.NETCore2.0)
編寫安全高效代碼的技巧
非尾隨命名參數
數值文字中的前導下劃線
privateprotected?拜訪修飾符
條件?ref?表達式
(3)C#7.3特徵(VisualStudio2017version15.7,.NETCore2.1)
C#7.3版別有兩個主要主題。?第一個主題供給使安全代碼的功用與不安全代碼的功用同樣好的功用。?第二個主題供給對現有功用的增量改進。?此外,在此版別中添加了新的編譯器選項。
如下新增功用支撐使安全代碼得到更好的功用的主題:
無需固定便可拜訪固定的字段。
可以從新分配?ref?本地變量。
可以運用?stackalloc?數組上的初始值設定項。
可以對支撐形式的任何類型運用?fixed?句子。
可以運用其餘泛型束縛。
對現有功用進行了如下加強:
可以運用元組類型測驗?==?和?!=。
可以在多個方位運用表達式變量。
可以將特色附加到主動完成的特色的支撐字段。
由?in?區別的參數的辦法解析獲得了改進。
重載解析的多義狀況如今變得更少。
新的編譯器選項爲:
-publicsign,用於啓用程序集的開放源代碼軟件(OSS)簽名。
-pathmap用於供給源目錄的映射。
八、C#8.0(VS2019,.NETCore3.0)
Readonly成員
默認接口成員
形式匹配加強功用:
Switch表達式
特色形式
元組形式
方位形式
Using聲明
靜態本地函數
可處置的ref結構
可爲空引證類型
異步流
索引和規模
Null兼併賦值
非保管結構類型
嵌套表達式中的stackalloc
內插逐字字符串的加強功用git