天天看點

C#中的AS、IS運算符與強制類型轉換

        as和強制轉換之間最大的差別就在于如何處理使用者自定義的轉換。操作符 as和 is 都隻檢查被轉換對象的運作時類型,并不執行其他的操作。如果被轉換對象的運作時類型既不是所轉換的目标類型,也不是其派生類型,那麼轉型将告失敗。但是強制轉型則會使用轉換操作符來執行轉型操作,這包括任何内建的數值轉換(如:long轉int)。

  一般情況我們應該先考慮使用as進行類型轉換,然後再考慮使用is,最後才考慮使用強制轉換。

如果你使用as來轉換資料,那麼用is來做檢測是不必要的。隻用檢測傳回類型是否為null就行了

is和as一樣,都是類型轉換安全的,它們在任何時候都不會在轉換時發生異常,是以可以先用is來安全的判斷一下資料類型。與as不同的時,is隻是做類型檢測并傳回邏輯值,不做轉換。

        as不能用于值類型,這是因為值類型不能為null。像這種情況我們應該使用強制類型轉換。

eg:在代碼中