C#中 ? 和?? 的用法


C#中 ?? 和? 的意思
1.?
如果直接定義一個 值類型,給負值null;就會提示“無法將 
Null轉換成‘值類型(比如:int)’,因為他是一種不可為null的值 
de類型”
例如
int in=null;//錯誤
int? in=null;//正確
string result=null;//正確 因為string是引用類型不是值類
型
string? result=null;//錯誤,因為?,只能用於值類型

2.??
var name??:“Hello World!”;//如果name為null,就選擇后面那個值,有點類似 var name=name?"Hello World!" :name;

  

補充:

可空類型可以表示基礎類型的所有值,另外還可以表示 null 值。可空類型可通過下面兩種方式中的一種聲明:

1、System.Nullable<T> variable

2、T? variable

T 是可空類型的基礎類型。T 可以是包括 struct 在內的任何值類型;但不能是引用類型。

Nullable<int> x =5等價於 int?x=5 可空類型

1.值類型后加問號表示此類型為可空類型,如int? i = null;
2.可空類型與一元或二元運算符一起使用時,只要有一個操作數為null,結果都為null;
3.比較可空類型時,只要一個操作數為null,比較結果就為false。

在使用的時候要注意如下幾點:
(1)因為可空類型可能為空,於是很多運算法則將不再簡單適用,比如A+B,如果A或者B當中有一個或者兩個為可空類型,那么它們便不能簡單相加,因為它們可能會為空,這時結果也就可能會為空,所以一定要先使用HasValue屬性測試是否為空,或者使用GetValueOrDefault屬性返回該基礎類型所賦的值或默認值,再或者使用??運算符分配默認值,當前值為空的可空類型被賦值給非空類型時將應用該默認值,比如int?x=null;int y=x??-1;,但是切不可直接進行運算。
(2)可空類型可以強制轉換為對應的基礎類型,比如int?x=3;int y=(int)x;,但在轉換之前一定要先測試是否不為空,如果為空的話就會出錯。
(3)由於以上兩點原因,建議不要隨意使用可空類型,只在必要的時候才使用,使用時一定要小心謹慎,隨時記得判斷是否為空。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM