《Effective C#》讀書筆記——條目3:推薦使用is或as而不是強制轉換類型

來源:互聯網
上載者:User
文章目錄
  • 使用as或is的優勢
  • as操作符的限制
  • is操作符的使用

  C#是強型別語言,在開發過程中類型之間的相互轉化是一種很常見的情境。C#為類型轉換提供兩種選擇:

  • 1.使用as操作符
  • 2.使用強制類型轉換

  或者可以使用更保險的做法,首先用is測試一下,能否轉換成功,然後再使用as或者強制類型轉換。在大部分情況下,我們應該儘可能的使用as操作符:

因為相對於強制類型轉換來說,as更安全,也更加高效。as和is操作符都不會執行任何使用者自訂的轉換,它們僅當運行時類型符合目標類型時才能轉換成功,也不會在轉換時建立新的對象。

 

使用as或is的優勢
  •   如果無法進行轉換,則 null 而非引發異常,只需要檢查返回的引用是否為null即可,避免了異常處理帶來的開銷。
  •   使用as操作符轉換對象為null時返回null,如果使用強制轉換的方式null可以被轉換成任意的參考型別。

 

as操作符的限制
  •   as操作符不能配合實值型別使用,因為它們永遠都不可能為null。

  

is操作符的使用
  •   在不確定的強制類型轉換中使用異常來控製程序流是一個很糟糕的做法,在轉換之前我們可以使用is來避免冒出異常或轉換。
  •   當不能使用as進行轉換時,才應該使用is操作符。否則is是多餘的;因為使用as操作符只需要檢查是否為null即可,這樣更加簡單。

 

小結:

  好的物件導向實踐一般都告訴我們要避免轉型,但有時侯你卻別無選擇。在無法避免轉型時,我們應該儘可能的使用as和is操作符來更清晰的表達意圖。不同的轉型方式有不同的規則,is和as操作符在絕大多數情況下都能表達出正確的語義,只有當被測試的對象時正確的類型時才會成功。應盡量選擇is和as而不是強制類型轉換,因為強制類型轉換可能會帶來意想不到的負面效應,而且成功或失敗往往在我們的預料之外。

 

閱讀書目:《Effective C#》

擴充閱讀:如何:使用 as 和 is 運算子安全地進行強制轉換(C#編程指南)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.