在寫程式的時候,是否看過類似的畫面,卻不知道 "隱含轉換" 到底是甚麼呢?
C# 在編譯時期是靜態型別,所以宣告變數之後,除非該型別隱含轉換為變數的型別,否則無法再次宣告或指派另一個型別的值。 By MSDN
簡單來說就是,你如果已經宣告好一個變數的資料型別,原則上就沒辦法指派其他的資料型別了。
double d1 = 6.0;
int i1 = 4;
d1 = i1;
i1 = d1; //這行會報錯
可是偶爾還是有轉換型別的需求該怎麼辦呢? 那就可以用到 "資料型別轉換"。
然而資料型別轉換又分成兩種
-
隱含轉換(自動轉換): 將比較小的資料型別轉成比較大的資料型別。 EX: int轉成double
-
不會遇到太大的問題,就像上面的程式碼 d1 = i1;
i1 會先轉成double 後再指定給d1。 (而且不用特別寫什麼,程式就會幫你自動轉換)
-
-
明確轉換(強制轉換): 將比較大的資料型別轉成比較小的資料型別。 EX: double轉成int
-
這時就會遇到問題了,你可以想像double(8Byte) 要變成 int (4Byte),那肯定會遇到問題
就像上面的程式碼 i1 = d1;
不過可以利用強制轉換來解決這樣的問題,只要改寫成 i1 = (int)d1;
先強制將d1轉成int 後再指定給i1 就解決了
-