C#語法中一個問號(?)和兩個問號(??)的運算子的含義和區別
阿新 • • 發佈:2018-11-22
轉:http://www.cnblogs.com/xpvincent/p/9516708.html
(1)C#語法中一個個問號(?)的運算子是指:可以為 null 的型別。
MSDN上面的解釋:
在處理資料庫和其他包含不可賦值的元素的資料型別時,將 null 賦值給數值型別或布林型以及日期型別的功能特別有用。例如,資料庫中的布林型欄位可以儲存值 true 或 false,或者,該欄位也可以未定義。
(2)、C#語法中兩個問號(??)的運算子是指null 合併運算子,合併運算子為型別轉換定義了一個預設值,以防可空型別的值為Null。
MSDN上面的解釋:
?? 運算子稱為 null 合併運算子,用於定義可以為 null 值的型別和引用型別的預設值。如果此運算子的左運算元不為 null,則此運算子將返回左運算元(左邊表示式);否則當左運算元為 null,返回右運算元(右邊表示式)
例:
int? x = null;//定義可空型別變數 int? y = x ?? 1000;//使用合併運算子,當變數x為null時,預設賦值1000 Console.WriteLine(y.ToString()); //1000 /// <summary> /// Gets a single instance /// </summary> public static Log LogInstance { get { return _log ?? (_log = new Log()); //如果此運算子的左運算元不為 null,則此運算子將返回左運算元;否則返回右運算元。 } }