下面列出了在曾經版別的C#言語和VisualStudio.NET中引進的主要功用。
1、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文檔注釋。
2、C#2特性(VS2005)
Generics:泛型
Partialtypes:分部類型,能夠將類、結構、接口等類型界說拆分到多個文件中
Anonymousmethods:匿名辦法
Iterators:迭代器
Nullabletypes:可認為Null的類型,該類能夠是其它值或者null
Getter/setterseparateaccessibility:特點拜訪操控
Methodgroupconversions(delegates):辦法組轉化,能夠將聲明托付代表一組辦法,隱式調用
Co-andContra-variancefordelegatesandinterfaces:托付、接口的協變和逆變
Staticclasses:靜態類
Delegateinference:托付揣度,允許將辦法名直接賦給托付變量
3、C#3特性(VS2008)
Implicitlytypedlocalvariables:
Objectandcollectioninitializers:對象和調集初始化器
Auto-Implementedproperties:主動特點,主動生成特點辦法,聲明更簡練
Anonymoustypes:匿名類型
Extensionmethods:擴展辦法
Queryexpressions:查詢表達式
Lambdaexpression:Lambda表達式
Expressiontrees:表達式樹,以樹形數據結構表明代碼,是一種新數據類型
Partialmethods:部分辦法
本地?var?類型推理
言語集成查詢(LINQ)
4、C#4特性(VS2010)
Dynamicbinding:動態綁定
Namedandoptionalarguments:命名參數和可選參數
Genericco-andcontravariance:泛型的協變和逆變
命名自變量
Embeddedinteroptypes(“NoPIA”):開啟嵌入類型信息,增加引證COM組件程序的中立性
5、C#5特性(VS2012)
Asynchronousmethods(async??await):異步辦法
Callerinfoattributes:調用方信息特性,調用時拜訪調用者的信息
(1)中心有一個小的更新,VisualStudio.NET2013:
此版別的VisualStudio包含.NETCompilerPlatform(“Roslyn”)的Bug修正、功用改進和技能預覽,Roslyn是?.NETCompilerPlatformSDK?的前身。
6、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:字典初始化
7、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用於供給源目錄的映射。
8、C#8.0(VS2019,.NETCore3.0)
Readonly成員
默認接口成員
形式匹配增強功用:
Switch表達式
特點形式
元組形式
方位形式
Using聲明
靜態本地函數
可處置的ref結構
可為空引證類型
異步流
索引和規模
Null兼並賦值
非保管結構類型
嵌套表達式中的stackalloc
內插逐字字符串的增強功用