狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#中?的相關使用

admin
2021年1月30日 10:40 本文熱度 3117

與?相關的使用大致分為以下幾種:

1. 可空類型

看標題就能夠很好的理解這個概念:可以為空的類型。而在C#中可以為空也就是null的類型,都是引用類型,所以?對于引用類型來說,也就沒有什么存在的價值了,只能服務于值類型,使得在某些不確定的情況下,值類型擁有更好的適應能力。也就是說,值類型也可以接受null,當然是在使用?的前提下。使用如下,在值類型后添加?即可:

 int? a = null;
 a = 10;

可以看的出,聲明為可空類型的變量,既可以接收null也可以接收正常的值類型。

2. 可空運算符

使用可空運算符這個詞可能不是特別的合適,但一時詞窮,將就用了。其實就是?. 和?[]罷了。分別用于對象對成員的調用以及數組的索引。對象為空或者數組為空,這種情況還是挺常見的。如果按照平時的寫法大致就是。。。

 if(object != null){//方法調用
     object.method();
}
 if(array != null){ //數組索引
     int a = array[1];
}

但是現在有了可空運算符之后,能省的就都省了,簡潔到飛起來,一句代碼搞定。

 object?.method();
 array?[1];

而且這樣的寫法更加的容易理解,在執行方法的調用或者素組的索引之前,進行null的判斷,如果為null,則后續的操作打斷,返回null;不為null,則繼續執行。這樣的效率相比較if判斷也要更高一下。

3. 三元運算符 condition?(true result):(false result)

這個再熟悉不過了,但是之前一直沒有和這些歸為一類來考慮,只是機械化的使用。不同的是,三元運算符的condition必須為bool類型,為true時,返回true result;false時,返回false result。需要注意的應該就是返回的值一定要和定義類型匹配才行。

4. 空合并運算符 ??

有些情況下,獲取的值可能出現null,但獲取的null對于后續的程序來說無法使用。好的處理方法,應該就是判斷一下獲取的值是否為null,為null,那么就賦一個值;不為null,就直接使用獲取的值,這樣是比較合理的操作。這里使用三元運算符是完全可以進行解決的,如下:

  int oneNum = object.num !=null? object.num : 0;

這樣獲取到oneNum永遠都不會為null,對于后續的代碼而言,也是相對有好的。雖然三元運算符可以解決,但更簡潔的解決方案是使用??:

  int oneNum = object.num ?? 0;

當object.num不為null時,返回object.num;object.num為null,則返回0。相比較三元運算符而言,更加的簡潔,理解性也高了不少。但是上面的使用存在一個問題,如果object為null呢?這里就可以使用可空運算符來判斷,如下:

  int oneNum = object?.num ?? 0;

這樣就保證了在ojbect為null的情況下,也不會出錯了。

總結

null在很多情況下,對于程序而言都是不友好的,我們也極力地避免null的出現。相比較使用各種判斷語句而言,?的出現無疑讓代碼精簡了不少,理解性也提高了很多。而且它們之間的嵌套使用(像最后一個例子)在復雜的判斷中優勢更加的明顯。


該文章在 2021/1/30 10:40:08 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved