《Effective C#》讀書筆記(3)

來源:互聯網
上載者:User

        Item 3: Prefer the is or as Operators to Casts

        第3項: 優先使用is/as進行類型轉換

        由於C#是強型別的語言,我們要盡量避免類型的轉換。但是有時轉換是無法避免的,這時我們要優先使用is/as來進行類型的轉換,避免使用強制的類型轉換。
       as和is操作符並不能進行所有的使用者定義的類型轉換, 只有當runtime類型和目標類型一致時轉換操作才會成功.它們永遠不會為了滿足程式調用請求而建立一個新的object,這樣就使類型轉換更加的安全。
        讓我們先來看看is操作符。is操作符可以檢查對象是否和指定的類型相容,並返回判斷結果。is操作符永遠不會拋出異常。
       

Object o = new Object();
Boolean b1 = (o is Object);  //b1為true
Boolean b2 = (o is Person);  //b2為false

        is操作符為我們檢查類型的相容性,而as操作符提供類型的轉型方式,它可以簡化代碼的同時提高效能。

object o = Factory.GetObject( );

MyType t = o as MyType;

if ( t != null )
{
  // work with t, it's a MyType.
} else
{
  // report the failure.
}

        在上面的代碼CLR會檢查o所引用的對象是否和MyType相容。如果相容,as返回一個指向同一個對象的非null 指標。如果不相容,as返回null。但是要注意,as不能用於實值型別的轉換,否則返回null。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.