免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

      C# 中的空合和空條件運算符

      C# 語言對空值NULL的處理提供了一整套機制和相應的語法糖,包優(yōu)雅而強大,個人感覺,大概也是所有編程語言中NULL處理機制最完善的。

      空合操作

      string name = GetName() ?? “張三”;

      空合操作符的運算規(guī)則是:若左側表達式求值后不為 null,則立即返回左側表達式值,右側表達式求值運算不再執(zhí)行;否則,對右側表達式求值并返回。因此,上述代碼實際上等價于:

      string? temp = GetName(); string name = temp != null ? temp : “張三”;

      空合運算符對于可空值類型(Nullable Value Types)同樣適用。

      int? i1 = 1; var i2 = i1 ?? 100;

      上面代碼中,可空值類型 i1 的值不為 null ,因此 i2 的值為 1。若 i1== null,則 i2 的值為100。因為最終運算結果不會包含 null 值,因此 i2 的類型被編譯器推斷為 int 而不是 int? 。代碼實際上等價于:

      int? i1 = 1; var i2 = i1 != null ? i1.Value : 100;

      空合操作符最神奇的地方是可以無限連接使用。

      string str = str1 ?? str2 ?? str3 ?? “默認值”;

      上面的代碼中,若 str1 不為 null ,則返回 str1 ,str2 和 str3 不再求值;否則繼續(xù)求 str2 值,若 str2 值不為 null,返回 str2 值,str3 不再求值。若 str2 值為 null,則繼續(xù)求 str3 值,若 str3 值不為 null,返回 str3 值,否則返回默認值。如果轉換成三元操作符,等價于:

      string str = str1 != null ? str1 : (str2 != null ? str2 : (str3 != null ? str3 : “默認值”));

      若轉換成 if 語句,則更加繁瑣:

      if(str1 != null) { str = str1; } else if (str2 != null) { str = str2; } else if(str3 != null) { str = str3; } else str = “默認值”;

      還有一個超級方便的空合賦值操作符。

      name ??= “張三”;

      即當 name 的值為 null 時,自動賦值右側表達式的值,等價于:

      if (name == null) { name = “張三”; }

      條件運算符

      空條件運算符的形式是 A?.B,即當 A == null 時,表達式值為 null。否則,就像正常的對象一樣調用屬性和方法。這樣做的好處是可以避免在 A 為 null 時拋出 NullReferenceException 異常。

      object? obj = null; var result = obj?.ToString();

      上述代碼實際上等價于:

      object? obj = null; var result = obj == null ? null : obj.ToString();

      因為結果可能為 null,因此 result 被編譯器推斷為 string? 而不是 string(開啟 nullable 特性的情況下)。

      空條件運算符還可用在索引上。

      string? str = “一段字符串”; var c = str?[1];

      上述代碼中,若 str 為 null,則 c 的值為 null,否則按照正常索引取值,代碼等價于:

      string? str = “一段字符串”; char? c = str == null ? null : str[1];

      需要注意的是,在索引運算上運用空條件運算符,并不檢查索引的邊界,因此若索引值超出序列的范圍,會引發(fā) IndexOutOfRangeException。

      string? str = “一段字符串”; var c = str?[6]; // 運行時引發(fā) IndexOutOfRangeException

      空條件運算法同樣可以多個結合在一起使用。

      A?.B?.C

      等價于以下代碼:

      A == null ? null : (A.B == null ? null : A.B.C)

      鄭重聲明:本文內容及圖片均整理自互聯(lián)網,不代表本站立場,版權歸原作者所有,如有侵權請聯(lián)系管理員(admin#wlmqw.com)刪除。
      用戶投稿
      上一篇 2022年6月27日 15:03
      下一篇 2022年6月27日 15:03

      相關推薦

      • 客服的崗位職責怎么寫(客服工作內容及職責)

        各位小伙伴們大家周一好,又到了每周一給大家分享干貨內容的時候啦~ 本期來跟大家分享一下客服工作管理流程以及客服崗位里面的每項職能崗位的核心細則,也是干貨滿滿推薦收藏~ 一.補償流程…

        2022年11月25日
      • 淘寶直播開通后帶貨鏈接怎么做(淘寶直播需要開通淘寶店鋪嗎)

        直播帶貨無論是對于商家來說還是主播收益都是非常可觀的,所以不少平臺都有直播帶貨功能,一些小伙伴也想加入淘寶直播,那么淘寶直播開通后帶貨鏈接怎么做?下面小編為大家?guī)硖詫氈辈ラ_通后帶…

        2022年11月24日
      • 小紅書入駐條件及費用(小紅書開店)

        小紅書喊你回家開店! 有不少用戶都發(fā)現,最近在逛小紅書的時候,筆記上面多出了一個圖片標簽,點進入之后便可進入下單頁面,還可以通過商品頁面找到相關店鋪,大大縮短了交易路徑。 “很方便…

        2022年11月23日
      • 快手限流多久能解除(快手限流什么意思)

        我相信很多人都看中了快手平臺的商機,都爭先恐后地想要搶占機會,可一些人剛剛作出一點成績,就被降權了,自己也不知道什么原因。所以今天就來聊聊快手賬號降權操作分享,趕快來看看避免違規(guī)!…

        2022年11月23日
      • Win11 22H2再出新問題Bug:無法彈出USB設備

        作為Windows 11的首次大更新,在Win11 22H2發(fā)布后并沒有帶來預想的場景,各種問題頻現成為了一種常態(tài)。 近日有消息稱,Win11 22H2存在一個占用沖突Bug,當用…

        2022年11月22日
      • 重慶高風險區(qū)一般多長時間解除(重慶成都是高風險區(qū)嗎)

        重慶這幾天的疫情新增情況也是比較嚴重的,大家對近期的重慶疫情防控措施也都十分關注,據悉目前重慶還存在不少的疫情高風險地區(qū)。那么,重慶高風險區(qū)一般多長時間解除?對于高風險地區(qū)解封時間…

        2022年11月21日
      • 面包車加入貨拉拉有什么條件(面包車拉貨平臺)

        現在大家可以看到各種貨拉拉的車在大街小巷穿梭,同城配送都會選擇貨拉拉搬運,其中面包車是非常常見的一種,一些小伙伴也想加入貨拉拉賺錢,那么面包車加入貨拉拉有什么條件?下面小編為大家?guī)А?/p>

        2022年11月21日
      • 馬斯克凌晨一點半曬“代碼審查”現場,編排他的段子比瘋狂星期四還多

        夢晨 Pine 發(fā)自 凹非寺 量子位 | 公眾號 QbitAI 每一個真正會寫代碼的人,請在下午2點到總部10層報到。 每一個真正會寫代碼的人,請在下午2點到總部10層報到。 馬斯…

        2022年11月21日
      • 美團月付300小額取現?美團月付取現300不見了

        很多上班族每天都在使用美團點外賣,你知道美團現在推出了一款類似花唄的產品嗎?可以在美團消費的時候先消費后還款,叫做美團月付,是美團推出的一款消費型產品,不能直接提現到銀行卡,只能用…

        2022年11月21日
      • wish個人開店流程及費用(wish平臺入駐條件)

        隨著電商行業(yè)的發(fā)展,不少國內賣家轉戰(zhàn)國外,可以說知名不知名的電商平臺都有了中國賣家的身影,wish也不例外,今天我們就來說說wish平臺入駐條件,讓大家有備無患。 想要在一個平臺上…

        2022年11月21日

      聯(lián)系我們

      聯(lián)系郵箱:admin#wlmqw.com
      工作時間:周一至周五,10:30-18:30,節(jié)假日休息