C# 語言演進

1,636次閱讀
尚無留言

共计 2632 个字符,预计需要花费 7 分钟才能阅读完成。

筆記關於 C# 語言的演進 每一個版本的特性

语言版本 发布时间 .NET Framework 要求 Visual Studio 版本
C# 1.0 2002.1 .NET Framework 1.0 Visual Studio .NET 2002
C# 1.1\1.2 2003.4 .NET Framework 1.1 Visual Studio .NET 2003
C# 2.0 2005.11 .NET Framework 2.0 Visual Studio 2005
C# 3.0 2007.11 .NET Framework 2.0\3.0\3.5 Visual Studio 2008
C# 4.0 2010.4 .NET Framework 4.0 Visual Studio 2010
C# 5.0 2012.8 .NET Framework 4.5 Visual Studio 2012\2013
C# 6.0 2015.7 .NET Framework 4.6 Visual Studio 2015
C# 7.0 2017.3 .NET Framework 4.6.2 Visual Studio 2017
C# 7.1 2017.6 .NET Framework Visual Studio 2017 v15.3 预览版

C# 1.0 特性

第 1 個版本,編程語言最基礎的特性。

Classes:面向對象特性,支持類類型
Structs:結構
Interfaces:接口
Events:事件
Properties:屬性,類的成員,提供訪問字段的靈活方法
Delegates:委託, 一種引用類型,表示對具有特定參數列表和返回類型的方法的引用
Expressions,Statements,Operators:表達式、語句、操作符
Attributes:特性,為程序代碼添加元數據或聲明性信息,運行時,通過反射可以訪問特性信息
Literals:字面值(或理解為常量值),區別常量,常量是和變量相對的

C# 2 特性 (VS 2005)

Generics:泛型
Partial types:分部類型,可以將類、結構、接口等類型定義拆分到多個文件中
Anonymous methods:匿名方法
Iterators:迭代器
Nullable types:可以為 Null 的類型,該類可以是其它值或者 null
Getter/setter separate accessibility:屬性訪問控制
Method group conversions (delegates):方法組轉換,可以將聲明委託代表一組方法,隱式調用
Co- and Contra-variance for delegates and interfaces:委託、接口的協變和逆變
Static classes:靜態類
Delegate inference:委託推斷,允許將方法名直接賦給委託變量

C# 3 特性 (VS 2008)

Implicitly typed local variables:
Object and collection initializers:對象和集合初始化器
Auto-Implemented properties:自動屬性,自動生成屬性方法,聲明更簡潔
Anonymous types:匿名類型
Extension methods:擴展方法
Query expressions:查詢表達式
Lambda expression:Lambda 表達式
Expression trees:表達式樹,以樹形數據結構表示代碼,是一種新數據類型
Partial methods:部分方法

C# 4 特性 (VS 2010)

Dynamic binding: 動態綁定
Named and optional arguments:命名參數和可選參數
Generic co- and contravariance:泛型的協變和逆變
Embedded interop types (“NoPIA”):開啟嵌入類型信息,增加引用 COM 組件程序的中立性

C# 5 特性 (VS 2012)

Asynchronous methods:異步方法
Caller info attributes:調用方信息特性,調用時訪問調用者的信息

C# 6 特徵 (VS 2015)

Compiler-as-a-service (Roslyn)
Import of static type members into namespace:支持僅導入類中的靜態成員
Exception filters:異常過濾器
Await in catch/finally blocks:支持在 catch/finally 語句塊使用 await 語句
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:字典初始化

C# 7 特徵 (Visual Studio 2017)

Out variables:out 變量直接聲明,例如可以 out in parameter
Pattern matching:模式匹配,根據對象類型或者其它屬性實現方法派發
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 可以在表達式中使用

C# 7.1 特征 (Visual Studio 2017 version 15.3)

Async main:在 main 方法用 async 方式
Default expressions:引入新的字面值 default
Reference assemblies:
Inferred tuple element names:
Pattern-matching with generics:

正文完
 0
評論(尚無留言)

夜升筆談

夜升筆談
夜升筆談
視寫代碼為信仰,奉高效能為執著,成為大牛不是一蹴可幾,但只要秉持信念終究能成,我依舊在這條路上不斷前進。
最新评论
Yosheng Yosheng 我是买梯子了 只是理解一下原理而已
虚拟信用卡 虚拟信用卡 还是直接买梯子吧,太浪费时间了
spring spring 学习了
cskepper cskepper 非常有用,已经顺利解决
cskepper cskepper 非常有用,已经顺利解决
Yosheng Yosheng 這可能是代理服務器的問題了...
淑淑 淑淑 我在大陸使用了VPN 照著你說的操作 但是出現無法透過代理伺服器連線 我的電腦是W7 也下載了兼容版 用了大概一個星期後今天LINE就無法使用VPN了 這種要怎樣解決
Yosheng Yosheng 如果不能直接撥放建議直接下載回來播放,後面我就沒去折騰為什麼不能線上播放了
SADFISH SADFISH 我无法播放语音是为什么呀楼主
Yosheng Yosheng 微信号 yosheng0323