C#中”is” vs “as”

來源:互聯網
上載者:User

        在資料類型轉換中,C#相對其它語言來說是比較嚴格的,要求顯式進行資料轉化。
        為了操作方便,C#也提供了一種is操作符進行轉換,十分方便,它自動檢查時局是否和類型相容,並返回結果。而且它不會拋出異常。如果對象引用為null,則is總返回false。

            if (cls1 is Class2) 
            {
                Class2 cls2 = (Class2)cls1;
            }
            else
                System.Console.WriteLine("Error 2!");

      平時自己也多用這種方式來做類型轉化的,但今天看了個文章,對比了另外一種方式,as操作符進行轉換,才知道as比is可以稍微地提高效能的。

            Class2 cls2 = cls1 as Class2;
            if (cls2!=null)
               System.Console.WriteLine("Ok");
            else
               System.Console.WriteLine("Error!");

        as稍微不同,它檢查引用對象是否相容,如果不相容則返回null,因此需要做null的判斷。

        對比兩種方式,is需要做兩次對象的類型檢查,而as需要做一次物件類型檢查,再加一次null的檢查,而null檢查開銷比物件類型檢查少。相對as的方法效率高些。

        看來日常寫的一些習慣性的代碼總可以找到改進的地方的,將新的方式再作為習慣不是更好?

相關文章

聯繫我們

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