1. 程式人生 > >C#語法中一個問號(?)和兩個問號(??)的運算子是什麼意思?zz

C#語法中一個問號(?)和兩個問號(??)的運算子是什麼意思?zz

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,則此運算子將返回左運算元;否則返回右運算元。
               }
        }