<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個(gè)小技巧助您減少if語句的狀態(tài)判斷

          共 1445字,需瀏覽 3分鐘

           ·

          2020-12-23 22:31


          在進(jìn)行項(xiàng)目的開發(fā)的過程中, if 語句是少不了的,但我們始終要有一顆消滅 if / else 語句的心。為了消滅if / else 我們引入了 短路器 的概念。短路器 有時(shí)候的確能精簡(jiǎn)我們的代碼,但還不夠,因此我參考了一個(gè)方法來繼續(xù)消滅一部分 斷路器 中的 if 語句。接下來就讓我們拿一段事例代碼來一步一步的演示下吧。

          如下一段比較典型if 斷路器 代碼:

          if (someConditionIsMet)
          {
          ? throw new SomeSpecificException("message");
          }
          //someConditionMetCode

          這里代碼雖然沒什么問題,但是我個(gè)人還是不喜歡用 if 的語句聲明。我更喜歡的是:

          Assert.That(someConditionIsMet, "message");

          但是這樣子的話我們就無法指定 Exception 的類型了,因此我們可能需要的是下面這樣子的:

          Assert.That<MyException>(someConditionIsMet, "message");

          但是基類Exception雖然具有無參數(shù)的構(gòu)造函數(shù),但是在創(chuàng)建異常之后,不允許我再給 Message 進(jìn)行賦值了。因?yàn)?,Message是Exception 類中的只讀屬性。

          public virtual string Message { get; }

          我的解決方案是使用Activator.CreateInstance并傳入要實(shí)例化的特定異常類型以及異常消息。如下代碼所示:

          public static class Assert
          {
          public static void That<T>(bool condition, string msg) where T : Exception, new()
          {
          if (condition)
          {
          var ex = Activator.CreateInstance(typeof(T), new object[] { msg }) as T;
          throw ex;
          }
          }
          }

          至此,結(jié)束。開頭的那段代碼就可以通過變通的方式把 if 語句給移除了,顯得代碼更精簡(jiǎn),你覺得呢?當(dāng)然,如果你有更好的處理方式也可以留言告訴我。

          參考自:https://www.codeproject.com/Tips/5289739/Assert-with-assertion



          往期精彩回顧




          【推薦】.NET Core開發(fā)實(shí)戰(zhàn)視頻課程?★★★

          .NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第一章 入門篇-開篇及總體規(guī)劃

          【.NET Core微服務(wù)實(shí)戰(zhàn)-統(tǒng)一身份認(rèn)證】開篇及目錄索引

          Redis基本使用及百億數(shù)據(jù)量中的使用技巧分享(附視頻地址及觀看指南)

          .NET Core中的一個(gè)接口多種實(shí)現(xiàn)的依賴注入與動(dòng)態(tài)選擇看這篇就夠了

          10個(gè)小技巧助您寫出高性能的ASP.NET Core代碼

          用abp vNext快速開發(fā)Quartz.NET定時(shí)任務(wù)管理界面

          在ASP.NET Core中創(chuàng)建基于Quartz.NET托管服務(wù)輕松實(shí)現(xiàn)作業(yè)調(diào)度

          現(xiàn)身說法:實(shí)際業(yè)務(wù)出發(fā)分析百億數(shù)據(jù)量下的多表查詢優(yōu)化

          關(guān)于C#異步編程你應(yīng)該了解的幾點(diǎn)建議

          C#異步編程看這篇就夠了


          瀏覽 78
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一区二 三区免费 | 久久精品福利免费视频 | 成人在线观看视频亚洲 | 国产无码一级视频 | www.男人天堂网 |