C# 9.0 新特性之目標型別推導 new 表示式
阿新 • • 發佈:2020-06-16
閱讀本文大概需要 2 分鐘。
呼~~,每次過完一個週末,寫作就失去了動力,一兩天才能緩過來。儘管如此,還是要堅持寫好每一篇文章的。寧缺毋濫嘛,寧願發文的頻率低一點,也要保證文章的質量,至少排版不能差,行文要流暢,錯別字不能有。 關於**型別推導**想必大家都很熟悉,它是在 var 關鍵字引入的時候引入 C# 的。 ```cs var i = 10; var u = new User(); ``` 編譯器會通過右邊的字面量自動推導左邊變數的型別,這種推導方式可以歸納為:從上下文右邊推匯出左邊的型別。我們不妨把它稱為**源型別推導**(Source-typed inferring,參考 Target-typed 自創的術語)。 相應的,有源型別推導就有**目標型別推導** (Target-typed inferring),它是指從上下文左邊推匯出右邊的型別。比如陣列的初始化和 Lambda 表示式常常是目標型別推導的表示式。舉個例子: ```cs // 沒有使用型別推導 string[] s = new string[] { "a", "b" }; // 目標型別推導(左推右) string[] s = new { "a", "b" }; string[] s = new [] { "a", "b" }; // 沒有使用型別推導 Users.FirstOrDefault