中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#9.0目標類型推導new表達式舉例分析

發布時間:2021-11-24 13:40:35 來源:億速云 閱讀:101 作者:iii 欄目:大數據

本篇內容介紹了“C#9.0目標類型推導new表達式舉例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

關于類型推導想必大家都很熟悉,它是在 var 關鍵字引入的時候引入 C# 的。

var i = 10;
var u = new User();

編譯器會通過右邊的字面量自動推導左邊變量的類型,這種推導方式可以歸納為:從上下文右邊推導出左邊的類型。我們不防把它稱為源類型推導(Source-typed inferring,參考 Target-typed 自創的術語)。

相應的,有源類型推導就有目標類型推導 (Target-typed inferring),它是指從上下文左邊推導出右邊的類型。比如數組的初始化和 Lambda 表達式常常是目標類型推導的表達式。舉個例子:

// 沒有使用類型推導
string[] s = new string[] { "a", "b" };
// 目標類型推導(左推右)
string[] s = new { "a", "b" };
string[] s = new [] { "a", "b" };

// 沒有使用類型推導
Users.FirstOrDefault<User>(u => u.id = 123);
// 目標類型推導(左推右)
Users.FirstOrDefault(u => u.id = 123);

這次在 C# 9 中,增加了用戶定義類型 new 表達式的目標類型推導,即通過上下文左邊自動推導 new 表達式的類型,從而在使用 new 構造時省略類型的指定,請看示例:

// C# 9 之前
Point p = new Point(3, 5);

// C# 9
Point p = new (3, 5);

除此之外,C# 9 也增加了操作符 ?? 和 ?: 的目標類型推導支持。之前這兩個操作符必須要求兩邊的操作對象都是相同的類型,否則會編譯報錯。而在 C# 9 中,只要目標類型是操作對象共同的基類就不再會編譯報錯了,比如:

// Student 和 Customer 擁有共同的父類 Person
Person person = (Person)(student ?? customer); // C# 9 之前
Person person = student ?? customer; // C# 9

// 可空類型,0 和 null 都可以隱式轉換為 int? 類型
int? result = b ? 0 : (int?)null; // C# 9 之前
int? result = b ? 0 : null; // C# 9

其實本文的核心就一句代碼:

Point p = new (3, 5);

“C#9.0目標類型推導new表達式舉例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

new
AI

志丹县| 万年县| 兰溪市| 临夏县| 柘荣县| 民和| 梅河口市| 扎赉特旗| 长治市| 伊通| 樟树市| 临洮县| 虹口区| 冷水江市| 清水河县| 万宁市| 米林县| 玛纳斯县| 桦甸市| 驻马店市| 丽江市| 油尖旺区| 大名县| 建阳市| 九江县| 郎溪县| 合肥市| 洪洞县| 双江| 眉山市| 耒阳市| 民县| 乐亭县| 三原县| 奉节县| 盘锦市| 阿拉尔市| 乐陵市| 洪泽县| 甘泉县| 沁源县|