您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關C#強制類型轉化有幾種的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
C#強制類型轉化有以下三種:
注:objA 為 typeA 類型,objB 為 typeB 類型
(1) typeA objA = (typeA)objB;
(2) typeA objA = objB as objA;
(3) typeA objA = objB as typeA
在實際開發過程中我們經常用到上面三種類型轉換,但這三種C#強制類型轉化的區別,以及在使用中應如何選擇呢?
在我們使用***種類型轉換時,如果類型typeA是typeB的上層類,則能正確進行類型轉換,如typeB是typeA的上層類,將會拋出System.InvalidCastException異常。所以在實開發中,為了避免異常的發行,我們可能會用到如下的代碼:
If(objB is typeA) { objA = (typeA)objB; }
其中is為第二種類型轉換,根據MSDN上的解釋,它的作用是“檢查對象是否與給定類型兼容”,盡管它僅是反回一個boolean類型的值,但它也是通過進行類型轉換來判斷是否兼容的,所以,在使用此語句的時候,會進行一次類型轉換。那么,如果typeB與typeA是相容的話,上述代碼將會再次進行 (typeA)objB的類型轉,肯定會影響我們所開發程序的性能。那么有沒有一種更好的辦法來幫助我們解決這個問題呢?
下面我們來看一下第三種C#強制類型轉化。
在進行第三種類型轉換時,如果typeB型的實例objB無法轉換到typeA類型時,就會反回一個null值,若轉換成功,則返回一個typeA類型的實例。此種轉換不會發生異常,且僅需一次類型轉換。這就解決了上面兩次類型轉換所帶來的性能消耗。
感謝各位的閱讀!關于“C#強制類型轉化有幾種”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。