感受C#6.0新文法

來源:互聯網
上載者:User

標籤:

作為一門專為程(yu)序(fa)員(tang)考慮的語言,感受一下來自微軟的滿滿的惡意...

1. 字串內聯
在之前的版本中,常用的格式化字串:

var s = String.Format("{0} is {1} year{{s}} old", p.Name, p.Age);

在 C# 6 中:

//無格式var s = $"{p.Name} is {p.Age} year{{s}} old";//帶格式var s = $"{p.Name,20} is {p.Age:D3} year{{s}} old";//帶子運算式var s = $"{p.Name} is {p.Age} year{(p.Age == 1 ? "" : "s")} old";


2. 空條件運算子
在之前的版本中對於 可空類型 或 動態類型 ,擷取子項目往往較為複雜:

if(someSchool != null && someSchool.someGrade != null && someSchool.someGrade.someClass != null){    return someSchool.someGrade.someClass.someOne;}

在 C# 6 中,引入了新的運算子:

return someSchool?.someGrade?.someClass?.someOne;//也可以使用下標運算,例如//return someArray?[0];

如果 ?. 運算子的左項為 null ,則直接返回 null 。
對於方法或者委託的執行,可以使用 Invoke:

someMethod?.Invoke(args);


3. nameof 運算式
可以直接返回傳入變數的名稱,而無需複雜的反射。

int someInt;Console.WriteLine(nameof(someInt)); //"someInt"

註:如果是前面帶有命名空間和/或類名,只返回最後的變數名。

4. 索引初始化器
在 C# 6 中簡化了對 Dictionary 的初始化方法:

var numbers = new Dictionary<int, string> {     [7] = "seven",     [9] = "nine",     [13] = "thirteen" };


5. 條件異常處理
在 C# 6 中可以選擇性地對某些異常進行處理,無需額外增加判斷過程:

try { … } catch (MyException e) if (myfilter(e)) {     … }


6. 屬性初始化器
在 C# 6 中可以直接對屬性進行初始化:

public class Customer {     public string First { get; set; } = "Jane";     public string Last { get; set; } = "Doe"; }

以及可以類似定義唯讀屬性。

7. 成員函數的 lambda 定義
在 C# 6 中可以使用 lambda 運算式來定義成員方法。

public class Point{    public Point Move(int dx, int dy) => new Point(x + dx, y + dy);     public static Complex operator +(Complex a, Complex b) => a.Add(b);     public static implicit operator string(Person p) => $"{p.First}, {p.Last}";}


8. 結構體的參數建構函式
在 C# 6 中可以建立結構體的帶參數建構函式。

struct Person {     public string Name { get; }     public int Age { get; }     public Person(string name, int age) { Name = name; Age = age; }     public Person() : this("Jane Doe", 37) { } }


9. using 靜態類
在 C# 6 中 using 除了可以用於命名空間也可以用於靜態類。

using System.Console; using System.Math;class Program {     static void Main()     {         WriteLine(Sqrt(3*3 + 4*4));     } }


來自:http://www.zhihu.com/question/27421302

感受C#6.0新文法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.