C# 7.0 新特性

C# 7.0 也快要發(fā)布了,查看了下new features,感覺C#也越來越有點兒動態(tài)語言的感覺了,各種語法糖,用起來爽歪歪哦。


Tuple(函數(shù)多返回值)

多返回值是C#7.0的一大亮點啊,除了用out parameter現(xiàn)在可以直接返回元組類型,而且是值類型的,并非引用,有點兒Python的感覺了。

(string, string, string) LookupName(long id) // tuple return type
{ 
    ... // retrieve first, middle and last from data storage 
    return (first, middle, last); // tuple literal
}

可以用Item1,Item2 ... 來獲取元組的元素,像這樣:

var names = LookupName(id);
WriteLine($"found {names.Item1} {names.Item3}.");

還可以給元組中的元素起一個別名:

(string first, string middle, string last) LookupName(long id) // tuple elements have names

var names = LookupName(id);
WriteLine($"found {names.first} {names.last}.");

還可以直接在返回出定義新變量:

(string first, string middle, string last) = LookupName(id1); // deconstructing declaration
WriteLine($"found {first} {last}.");

是不是找到了Python的感覺呢!

Pattern matching(模式匹配)

可以更方便的判斷一個變量的類型來進行下一步操作。也可以用在case中,非常靈活。

public void PrintStars(object o)
{
    if (o is null) return; // constant pattern "null" 
    if (!(o is int i)) return; // type pattern "int i" 
    WriteLine(new string('*', i));
}

用在switch case中就更方便了:

switch(shape)
{
    case Circle c: 
        WriteLine($"circle with radius {c.Radius}");
        break; 
    case Rectangle s when (s.Length == s.Height): 
        WriteLine($"{s.Length} x {s.Height} square"); 
        break; 
    case Rectangle r: 
         WriteLine($"{r.Length} x {r.Height} rectangle"); 
         break; 
    default: 
         WriteLine("<unknown shape>"); 
         break; 
    case null: 
         throw new ArgumentNullException(nameof(shape));
}

其他的特性

還有一些特性也使得代碼更加簡潔:

  • out variables
p.GetCoordinates(out int x, out int y); 
WriteLine($"({x}, {y})");
  • local functions(局部方法)

  • 數(shù)字可以加下劃線分開,如var d = 123_456;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,187評論 1 10
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 4,085評論 0 6
  • 86.復合 Cases 共享相同代碼塊的多個switch 分支 分支可以合并, 寫在分支后用逗號分開。如果任何模式...
    無灃閱讀 1,550評論 1 5
  • 有同學下周翹課去首爾,在朋友圈說可代購,然后我的天吶體內的洪荒之力難以控制,刷刷刷寫了好多東西列了不長不短的單子,...
    Cony_Lv閱讀 258評論 0 0
  • 我最最心愛的小寶貝: 當媽媽提起筆給寶貝寫這封信的時候,我腦海里像放電影一般,寶貝成長的點滴一幕幕的掠過。媽...
    ANN莫閱讀 1,108評論 0 0

友情鏈接更多精彩內容