C#語法中一個問號(?)和兩個問號(??)的運算子是什麼意思?zz
阿新 • • 發佈:2019-01-05
1)、C#語法中一個個問號(?)的運算子是指:可以為 null 的型別。
MSDN上面的解釋:
在處理資料庫和其他包含不可賦值的元素的資料型別時,將 null 賦值給數值型別或布林型以及日期型別的功能特別有用。例如,資料庫中的布林型欄位可以儲存值 true 或 false,或者,該欄位也可以未定義。
(2)、C#語法中兩個問號(??)的運算子是指null 合併運算子,合併運算子為型別轉換定義了一個預設值,以防可空型別的值為Null。
MSDN上面的解釋:
?? 運算子稱為 null 合併運算子,用於定義可以為 null 值的型別和引用型別的預設值。如果此運算子的左運算元不為 null,則此運算子將返回左運算元(左邊表示式);否則當左運算元為 null,返回右運算元(右邊表示式)。
C# Code:
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,則此運算子將返回左運算元;否則返回右運算元。
}
}