C# 6新特性及示例代碼,
今天推薦的其實是一個Github開源項目,不過這個開源項目是專門介紹C# 6的最新特性,並給出了示例代碼。
我們知道,微軟即將發布Windows 10和Visual Studio 2015,在VS2015中會帶有最新版本的C# 6和VB 14。我想大家前期應該已經或多或少的對C# 6的一些新特性有所了解了。
在今天推薦的這個頁面(或者說是網站中),Robert MacLean 給出了一系列博文地址來逐一介紹了C# 6的新特性,並都附帶有示例代碼。涉及到如下C# 6的新特性:
- 字典/索引初始化器(Dictionary Initialisers or Index Initialisers)。這個特性使得字典和列表集合的初始化變得更加容易。
- 帶有初始化器的自動屬性(Auto-properties with initializers)。之前自動屬性的初始化只能在構造器中,現在可以寫到屬性上。
- 只讀自動屬性(Read-only auto-properties)。其實之前的C#是支持實現只讀效果(讓set語句為private)的自動屬性的,不過現在可以真正的支持了。
- 靜態using語句(Static Using Statements)。通過在using上附加static修飾符,讓靜態方法調用可以省略命名空間和類前綴了。
- 在catch片段中支持await(Await in catch blocks)。這個特性顧名思義。
- 異常過濾器(Exception Filtering)。在捕獲異常的時候,可以用額外的判斷條件來過濾執行流程是否進入當前catch片段。由於這個特性有很多奇巧淫技(比如之前我介紹過的用這個特性來實現C#的模式匹配),作者又用一篇博文詳細講解了更多用法(Additional Details on Exception Filtering)。
- 空值傳播操作或也稱nullet操作符(Null Propogation (the nullet operator))。之前如果一個對象可能為空,那麼就需要先判斷再訪問其屬性,現在可以通過nullet操作符(或稱貓王操作符)“?.”來快捷的實現這樣的代碼邏輯。這個特性極大地依賴於Roslyn編譯器功能。
- 獲取名稱字符串(NameOf)。這個特性和TypeOf類似,不過NameOf是獲取名稱字符串值的。有了這個特性,以後媽媽再也不用擔心我寫錯名稱了。
- 成員內部代碼寫為表達式(Expression Bodied Members)。也就是可以把方法(這樣的類成員)的內部代碼直接寫為一個表達式,這樣一行代碼就可以完成方法的編寫。
- 字符串插值(String Interpolation)。之前要把幾個變量構造為一個字符串,除了字符串連接,就是string.Format,現在可以在字符串中直接插入變量名稱即可。
以上博文寫得的內容都很詳實易懂,配有代碼。尤其還會先講述C#老版本是如何完成類似工作,在使用新語法後如何事倍功半。是C# 6新特性不可多得的學習資料。
博文的索引和具體代碼,可以“閱讀原文”來訪問。
原文地址:https://github.com/rmaclean/sharpsharpwithcsharp6