下面列出了在曾经版别的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
内插逐字字符串的增强功用