C#中?的相關(guān)使用
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
與?相關(guān)的使用大致分為以下幾種: 1. 可空類型看標題就能夠很好的理解這個概念:可以為空的類型。而在C#中可以為空也就是null的類型,都是引用類型,所以?對于引用類型來說,也就沒有什么存在的價值了,只能服務于值類型,使得在某些不確定的情況下,值類型擁有更好的適應能力。也就是說,值類型也可以接受null,當然是在使用?的前提下。使用如下,在值類型后添加?即可: int? a = null; 可以看的出,聲明為可空類型的變量,既可以接收null也可以接收正常的值類型。 2. 可空運算符使用可空運算符這個詞可能不是特別的合適,但一時詞窮,將就用了。其實就是?. 和?[]罷了。分別用于對象對成員的調(diào)用以及數(shù)組的索引。對象為空或者數(shù)組為空,這種情況還是挺常見的。如果按照平時的寫法大致就是。。。 if(object != null){//方法調(diào)用 但是現(xiàn)在有了可空運算符之后,能省的就都省了,簡潔到飛起來,一句代碼搞定。 object?.method(); 而且這樣的寫法更加的容易理解,在執(zhí)行方法的調(diào)用或者素組的索引之前,進行null的判斷,如果為null,則后續(xù)的操作打斷,返回null;不為null,則繼續(xù)執(zhí)行。這樣的效率相比較if判斷也要更高一下。 3. 三元運算符 condition?(true result):(false result)這個再熟悉不過了,但是之前一直沒有和這些歸為一類來考慮,只是機械化的使用。不同的是,三元運算符的condition必須為bool類型,為true時,返回true result;false時,返回false result。需要注意的應該就是返回的值一定要和定義類型匹配才行。 4. 空合并運算符 ??有些情況下,獲取的值可能出現(xiàn)null,但獲取的null對于后續(xù)的程序來說無法使用。好的處理方法,應該就是判斷一下獲取的值是否為null,為null,那么就賦一個值;不為null,就直接使用獲取的值,這樣是比較合理的操作。這里使用三元運算符是完全可以進行解決的,如下:
這樣獲取到oneNum永遠都不會為null,對于后續(xù)的代碼而言,也是相對有好的。雖然三元運算符可以解決,但更簡潔的解決方案是使用??:
當object.num不為null時,返回object.num;object.num為null,則返回0。相比較三元運算符而言,更加的簡潔,理解性也高了不少。但是上面的使用存在一個問題,如果object為null呢?這里就可以使用可空運算符來判斷,如下:
這樣就保證了在ojbect為null的情況下,也不會出錯了。 總結(jié)null在很多情況下,對于程序而言都是不友好的,我們也極力地避免null的出現(xiàn)。相比較使用各種判斷語句而言,?的出現(xiàn)無疑讓代碼精簡了不少,理解性也提高了很多。而且它們之間的嵌套使用(像最后一個例子)在復雜的判斷中優(yōu)勢更加的明顯。 該文章在 2021/1/30 10:40:08 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |