一、.NET Framework、C#、Visual Studio版本

C#版本

.NET Framework版本

Visual Studio版本

发布时间

C# 1.0

.NET Framework 1.0

Visual Studio .NET  2002

2002.1

C# 1.1 

C# 1.2

.NET Framework 1.1

Visual Studio  .NET 2003

2003.4

C# 2.0

.NET Framework 2.0

Visual Studio  2005

2005.11

C# 3.0

.NET Framework 2.0

.NET Framework 3.0

.NEF Framework 3.5

Visual Studio  2008

Visual Studio  2010

2007.11

C# 4.0

.NET Framework 4.0

Visual Studio  2010

2010.4

C# 5.0

.NET Framework 4.5

Visual Studio  2012

Visual Studio  2013

2012.8

C# 6.0

.NET Framework 4.6

Visual Studio  2015

2015.7

C# 7.0

.NET Framework 4.6.2

Visual Studio  2017

2017.3

C# 7.1

.NET Framework 4.7

Visual Studio  2002

2017.8

C# 7.2

.NET Framework 4.7.1

Visual Studio  2002

2017.11

C# 7.3

.NET Framework 4.7.2

Visual Studio  2002

2018.5

 

 

 

 

二、查看计算机上安装的.NET Framework版本

方法一:在开始目录找到Visual Studio Tool,使用VS 开发人员命令提示符(命令窗口),使用 Clrver 工具查找当前运行时版本,输入命令clrver。

IOS 查看framework是否为动态库 怎么查看framework版本_Visual

IOS 查看framework是否为动态库 怎么查看framework版本_.NET版本_02

方法二:在计算机资源管理器的地址栏中,输入路径:%systemroot%\Microsoft.NET\Framework。这里就是进入了.NET Framewok的版本信息目录,可以看下本计算机安装的是那个版本的.NET Framework。

IOS 查看framework是否为动态库 怎么查看framework版本_Visual_03

IOS 查看framework是否为动态库 怎么查看framework版本_VS版本_04

三、C#版本发展与语言特性

C# 1.0 特性 [C#第一个版本,提供所有必须的基础语法特性]

Classes

面向对象特性,支持类类型

Structs

结构

Interfaces

接口

Events

事件

Properties

属性,类的成员,提供访问字段的灵活方法

Delegates

委托,一种引用类型,表示对具有特定参数列表和返回类型的方法的引用

Expressions

表达式

Statements

语句

Operators

操作符

Attributes

特性,为程序代码添加元数据或声明性信息,运行时,通过反射可以访问特性信息

Literals

字面值(或理解为常量值),区别常量,常量是和变量相对的

C#2.0特性【C#2.0中最重要的就是引进了泛型的概念】

Generics

泛型

Partial types

分部类型,可以将类、结构、接口等类型定义拆分到多个文件中

Anonymous methods

匿名方法

Iterators

迭代器

Nullable types

可以为Null的类型,该类可以是其它值或者null

Getter/setter separate accessibility

属性访问控制

Static classes

静态类

Co- and Contra-variance for delegates and interfaces

委托、接口的协变和逆变

Delegate inference

委托推断,允许将方法名直接赋给委托变量

Method group conversions (delegates)

方法组转换,可以将声明委托代表一组方法,隐式调用

C#3.0【该版本中较大的改进是增加了隐式局部变量和扩展方法】

Anonymous types

匿名类型

Extension methods

扩展方法

Query expressions

查询表达式

Lambda expression

Lambda表达式

Expression trees

表达式树,以树形数据结构表示代码,是一种新数据类型

Partial methods

部分方法

Auto-Implemented properties

自动属性,自动生成属性方法,声明更简洁

Object and collection initializers

对象和集合初始化器

Implicitly typed local variables

隐式局部变量

C#4.0

Dynamic binding

动态绑定

Named and optional arguments

命名参数和可选参数

Generic co- and contravariance

泛型的协变和逆变

C#5.0

 

Asynchronous methods

异步编程

Caller info attributes

调用方信息特性,调用时访问调用者的信息

C#6.0

Auto property initializers

自动属性初始化

Default values for getter-only properties

设置只读属性的默认值

Expression-bodied members

支持以表达式为主体的成员方法和只读属性

Null propagator (null-conditional operator, succinct null checking)

Null条件操作符

String interpolation

字符串插值,产生特定格式字符串的新方法

nameof operator

nameof操作符,返回方法、属性、变量的名称

Dictionary initializer

字典初始化

Await in catch/finally blocks

支持在catch/finally语句块使用await语句

Import of static type members into namespace

支持仅导入类中的静态成员

C#7.0

Tuples

元组

Deconstruction

元组解析

Discards

没有命名的变量,只是占位,后面代码不需要使用其值

Local Functions

局部函数

Binary Literals

二进制字面量

Digit Separators

数字分隔符

Ref returns and locals

引用返回值和局部变量

Generalized async return types

async中使用泛型返回类型

More expression-bodied members

允许构造器、解析器、属性可以使用表达式作为body

Throw expressions

Throw可以在表达式中使用

Out variables

out变量直接声明,例如可以out in parameter

Pattern matching

模式匹配,根据对象类型或者其它属性实现方法派发