1. 程式人生 > >[我眼中的C#]顯式轉換和隱式轉換

[我眼中的C#]顯式轉換和隱式轉換

上節介紹了15中基礎的變數型別,那麼這些變數之間如何轉換呢?下面我們來介紹一下。
轉換分為顯式轉換和隱式轉換,顯式轉換就是需要我們通過程式碼去控制的使其變數型別發生改變的轉換,而隱式轉換不需要我們去操作,編譯器會自動執行。
先介紹一下值型別之間的轉換,進行轉換的原則就是記憶體的空間能夠放的下,上節我們瞭解了不同變數都有它的取值範圍,如果我們將一個int(假設值是2147483646)型別的變數 賦值給一個short(最大儲存的是32767)型別的變數,因為記憶體空間不夠用了,所以編譯器就會報錯,所以我們需要進行強制轉換。反之則是可以的,因為無論如何short型別的變數都不會超過使int型別的範圍,所以可以直接轉換(隱式轉換)。
以盒子為例,小盒子裡的東西一定能裝到大盒子裡面,而大盒子裡的東西未必能裝到小盒子裡面。
這裡寫圖片描述


對於引用型別,引用型別的類之間沒有所謂的大小,只有父子關係,子類可直接轉換為父類,而父類需要進行強制型別轉換為子類才能進行,但是有的時候型別之間根本不能匹配,編譯器在執行時就會報錯,這是我們可以使用as關鍵字進行轉換(A a=b as A;),即使型別不匹配,也不會報錯,而只會傳入一個空的值null。