C#中的可空類型修飾符
引用類型可以使用空引用表示一個(gè)不存在的值,而值類型通常不能表示為空。
例如:string str=null; 是正確的,int i=null; 編譯器就會(huì)報(bào)錯(cuò)。
為了使值類型也可為空,就可以使用可空類型,即用可空類型修飾符 ? 來表示,表現(xiàn)形式為 T? 。
例如:int? 表示可空的整形,DateTime? 表示可為空的時(shí)間。
T? 其實(shí)是 System.Nullable(泛型結(jié)構(gòu))的縮寫形式,也就意味著當(dāng)你用到 T?時(shí)編譯器編譯時(shí)會(huì)把T?編譯成 System.Nullable 的形式。
例如:int?,編譯后便是 System.Nullable 的形式。
一、三元(運(yùn)算符)表達(dá)式 ?:
例如:x?y:z 表示如果表達(dá)式 x 為 true,則返回 y;如果 x 為 false,則返回 z,是 if{}else{} 的簡(jiǎn)單形式。
二、空合并運(yùn)算符 ??
用于定義可空類型和引用類型的默認(rèn)值。
如果此運(yùn)算符的左操作數(shù)不為 null,則此運(yùn)算符將返回左操作數(shù),否則返回右操作數(shù)。
例如:a??b 當(dāng) a 為 null 時(shí)則返回 b,a 不為 null 時(shí)則返回 a 本身。
空合并運(yùn)算符為右結(jié)合運(yùn)算符,即操作時(shí)從右向左進(jìn)行組合的。
如: a??b??c 的形式按 a??(b??c) 計(jì)算。
三、NULL 檢查運(yùn)算符 ?.
int? firstX = points?.FirstOrDefault()?.X;
從這個(gè)例子中我們也可以看出它的基本用法:如果對(duì)象為 NULL,則不進(jìn)行后面的獲取成員的運(yùn)算,直接返回 NULL。
需要注意的是,由于 ?. 運(yùn)算符返回的可以是 NULL,當(dāng)返回的成員類型是 struct 類型的時(shí)候, ?. 和 . 運(yùn)算符的返回值類型是不一樣的。
Point p = new Point(3, 2);
Console.WriteLine(p.X.GetType() == typeof(int)); ? ? ? ?//true
Console.WriteLine(p?.X.GetType() == typeof(int?)); ? ? ?//true
更多課程觀看請(qǐng)點(diǎn)擊:
https://bycwedu.vipwan.cn/promotion_channels/630597732