天天看點

C#文法中一個問号(?)和兩個問号(??)的運算符是什麼意思?

(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,則此運算符将傳回左操作數;否則傳回右操作數。

               }

        }