Mads Torgersen介绍C# 7及后续版本新特性
在QCon紐約2016大會上,C#項目經理Mads Torgersen介紹了即將到來的C# 7。他還簡單地闡述了C#的演化過程,并展示了部分正在開發的未來版本特性。
\\近年來,云和分布式系統的出現使開發人員面臨著新的挑戰。開發人員需要進步,語言也要隨之進步。像C#這樣一門多用途語言,其演化需要平衡不同的方面:
\\- 改善 vs 保持簡單 \\
- 改善現有開發 vs 吸引新用戶 \\
- 采用新范式 vs 忠于C#的OOP精神 \
近年來,.Net整體上也經歷了重大的變化:
\\- 支持Windows、Mac OS和Linux(.Net Core) \\
- 部署系統 \\
- 編譯成本地代碼(.NET Native) \\
- 開源編譯器和公共Roslyn API \\
- 多編輯器選擇(由OmniSharp和Roslyn促成) \\
- 開源框架、編輯器和工具 \
C# 7
\\C# 7將隨Visual Studio 15交付,后者目前是以預覽版的形式提供。為了加快新語言特性的推出速度,他們正在討論點版本發布。這樣,語言特性會包含在小版本中。此舉的目的在于,一旦新特性開發完成,早期采用者就可以選擇激活各種新特性。
\\C# 7將包含元組。從一個方法返回多個值變得更簡單:
\\static (int sum, int count) Method()\{\ return (0, 0)\}\// 調用方法并使用結果\var result = Method();\Console.WriteLine($\"Sum:{result.sum}.Count: {result.count}.\");\\\元組還可以用在泛型類型中。元組是值類型,也就是說,它們是在棧上分配內存,而不是堆上。這可能會提高性能,比如減少關鍵代碼路徑中的垃圾收集開銷。
\\// 異步方法返回元組\static async Task\u0026lt;(int sum, int count)\u0026gt; Method()\\// Dictionary使用元組作為鍵\var dict = new Dictionary\u0026lt;(string first, string last), person\u0026gt;();\\\部分模式匹配特性的刪減招致了模式匹配特性將整體刪除的傳言。C# 7還會包含模式匹配特性,未來版本還會進行增強。
\\C# 7后續版本特性
\\有多項特性目前正在開發之中,將會包含在C#的下一個版本中。為了提供一種簡單的方式處理某些場景,更多的模式匹配語義也正在探索之中:
\\// 使用C# 7模式匹配\if (O is Point p \u0026amp;\u0026amp; p.X == 5) { WriteLine($\"Y: {p.Y}\")}\\// 使用未來版本的替代語法處理相同的場景\if (o is Point X {var x, Y: var y} \u0026amp;\u0026amp; x == 5) { WriteLine($\"Y: {y}\")}\\if (o is Point { X : 5, Y: var y}) { WriteLine($\"Y: {y}\")}\\if (o is Point(5, var y)) { WriteLine($\"Y: {y}\")}\\\可空引用類型的實現正在進行當中。當前的思路是,當編譯器檢測到null值的不合理使用時就發出警告:
\\string? n;\string s;\\n = null; // 好的,可空\s = null; // 警告,不應該為空\s = n; // 警告\\WriteLine(s.Length); // 一定不為空\WriteLine(n.Length) // 警告!可能為空\\\不可變值類型Record是另一項正在開發中的特性。不可變讓并發環境數據分享更安全,讓程序更容易推斷。Record類型提供了一種在C#中使用不可變性的簡潔方式。Record有默認值語義,就是說提供了開箱即用的getter、GetHashCode、equality成員實現。
\\查看英文原文:C# 7 and Beyond with Mads Torgersen
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Mads Torgersen介绍C# 7及后续版本新特性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业级日志收集系统——ELKstack
- 下一篇: 你所未知的3种 Node.js 代码优化