在C#中??和?分別是什麼意思?

1. 可空類型修飾符(?):

引用類型可以使用空引用表示一個不存在的值,而值類型通常不能表示爲空。

例如:string str=null; 是正確的,int i=null; 編譯器就會報錯。

爲了使值類型也可爲空,就可以使用可空類型,即用可空類型修飾符"?"來表示,表現形式爲"T?"

例如:int? 表示可空的整形,DateTime? 表示可爲空的時間。

T? 其實是System.Nullable(泛型結構)的縮寫形式,也就意味着當你用到T?時編譯器編譯 時會把T?編譯成System.Nullable的形式。

例如:int?,編譯後便是System.Nullable的形式。

 

2. 三元(運算符)表達式(?:):

例如:x?y:z 表示如果表達式x爲true,則返回y;如果x爲false,則返回z,是省略if{}else{}的簡單形式。

 

3. 空合併運算符(??):

用於定義可空類型和引用類型的默認值。如果此運算符的左操作數不爲null,則此運算符將返回左操作數,否則返回右操作數。

例如:a??b 當a爲null時則返回b,a不爲null時則返回a本身。

空合併運算符爲右結合運算符,即操作時從右向左進行組合的。如,“a??b??c”的形式按“a??(b??c)”計算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章