在C#中「?」有三種用法。
- 可空類型修飾符(?):引用類型可以使用空引用表示一個不存在的值,而值類型通常不能表示為空,例如:string str=null;是正確的。int i=null;編譯器將報錯。為了使值類型也可為空,可空類型出現了,可空類型使用可空類型修飾符?來表示,表現形式為T?。例:int? 表示是可空的整形,DateTime?表示為可空的時間。T?其實是System.Nullable<T>(泛型結構)的縮寫形式,也就意味著當你用到T?時編譯器在編譯時會把T?編譯成System.Nullable<T>的形式,例如:int?,編譯後便是System.Nullable<int>的形式。
- 三元(運算符)表達式(?:)。
- 空合併運算符(??):用於定義可空類型和引用類型的默認值。如果此運算符的左操作數不為 null,則此運算符將返回左操作數;否則返回右操作數。 例:a ?? b,當a為null時則返回b,a不為空時返回a本身。空合併運算符為右結合運算符,即操作時從右向左進行組合的。如,「a ?? b ?? c」的形式按「a ?? (b ?? c)」計算。
文章來源:http://blog.csdn.net/loveyou128144/article/details/4409706