C 對可空值類型的支持
System.Nullable<T>是結構。
1、C# 對可空值類型的支持
C# 允許用問號表示法來聲明可空值類型,如:
Int32? x = 5;
Int32? y = null;
System.Nullable<T>應用操作符解析規則:
一元操作符(+, ++, -, --, !, ~) 操作數是 null ,結果就是 null。
二元操作符(+, -, *, /, %, &, |, ^, <<, >>) 兩個操作數任何一個是 null ,結果就是
null . 但有一個例外,它發生在將 & 和 | 操作符應用於 Boolean? 操作數的時候.這種情況和 SQL 的三值邏輯一樣.都不為 null
,正常計算;都為 null ,結果為 null ;其一為 null 時,見下面示例:
null & true = null ; null | true = true ; null & false = false ; null | false = null ;
相等操作符(==, !=) 兩個操作數都是 null,兩者相等; 一個操作數是 null, 兩者不相等;兩個操作數都不是
null,就比較值來判斷是否相等。關係操作符(<, >, <=, >=) 兩個操作數任何一個是 null,結果就是 false ,兩個操作數都不是
null,就比較值。操作可空實例會生成大量代碼,且速度慢於非可空類型。
定義自己的值類型來重載操作符,編譯器能正確識別它並調用你重載的操作符(方法)。
2、C# 的空接合操作符
C# 提供了一個"空接合操作符",即 ?? 操作符,它要取兩個操作數.假如左邊的操作數不為
null,就返回這個操作數的值,否則,就返回右邊的操作數的值。既可用於引用類型,也能用於可空值類型。
int? b = null;
//下面等價於:
// x =(b.HasValue) ? b.Value : 123int x = b ?? 123;
Console.WriteLine(x); // "123"//下面這行等價於:// string temp = GetFilename();
// filename = (temp != null) ? temp : "Untitled";
string filename = GetFilename() ?? "Untitled";
3、CLR 對可空值類型的特殊支持
裝箱: 當 CLR 對 Nullable實例進行裝箱時,會檢查它是否為 null .如果是,CLR 不裝箱任何東西,直接返回 null .
如果不為 null , CLR 從可空實例中取出值並進行裝箱.
拆箱:
//創建已裝箱的 Int32
object o = 5;
//把它拆箱為一個 Nullable<int>和一個int
int? a = (int?)o; // a = 5
int b = (int)o; // a = 5
//創建初始化為null的一個引用
o = null;a = (int?)o; // a = null
b = (int)o; // NullReferenceException
在 Nullable對象上調用 GetType,會返回 T 的類型
Nullable類型的變數 n 可以轉型為介面類型 IComparable
int? n = 5;
int result = ((IComparable)n).CompareTo(5);
Console.WriteLine(result);
中公優就業IT培訓,總有你想學的:http://xue.ujiuye.com
勤工儉學計劃,0元學IT!
http://www.ujiuye.com/zt/qgjx/?wt.bd=mmxtt
找工作太難?好漢,讓我助你一臂之力!
http://www.ujiuye.com/zt/jyfc/?wt.bd=mmxtt
※SpringMVC詳解——基於註解的入門實例
※插入排序演算法之直接插入排序和希爾排序
※程序員的一天:不是在苦逼,就是在苦逼的路上
※SpringMVC詳解——詳細架構
※macvlan 網路隔離和連通-每天5分鐘玩轉 Dock
TAG:IT優就業 |
※JS 中對變數類型的判斷
※鯰魚臉的女生適合啥髮型?4種類型髮型LOOK,讓你秒變高級臉
※癲癇的各種類型所對應的危害
※什麼類型的刀才有資格稱之為EDC?
※VBA之數據類型和常量與變數
※XSD 數值數據類型
※如何簡單有效的從同類型P2P平台中挑選出性價比更高的
※P2P哪種資產類型最可靠?
※C++模板取函數參數類型和返回值類型的方法
※兩種類型的抑鬱
※Salk研究所開發「通用型」基因編輯工具,可靶向多種突變和細胞類型
※內向型 vs 外向型:如何判斷你的類型,並有針對性地提高生產力?
※追TFBOYS的時候有哭過嗎?粉絲的回答可分為三種類型
※穿搭出真性情,三款值得關注的酷Girl類型腕錶推薦
※伺服器三種DIMM類型的區別及應用
※不同類型肺水腫的CT表現
※JACC研究:心碎綜合征有三種類型,死亡風險不低於心梗
※面對愛情里的衝突,你是哪種應對類型?丨愛情衝突類型評估
※所有類型的輕型卒中和TIA,都能從雙抗中獲益嗎?
※優步推出多種類型:用戶現在可自由選擇