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)”計算

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