c# 是在編譯時靜態型別化的,因此變數在宣告後就無法再次宣告,或者無法用於儲存其他型別的值,除非該型別可以轉換為變數的型別。
1. 隱式型別轉換
隱式轉換,就是系統預設的轉換,其本質是小儲存容量資料型別自動轉換為大儲存容量資料型別,該轉換是一種安全型別的轉換,不會導致資料丟失,因此不需要任何特殊的語法。
下面是 .net 資料型別之間的c#隱式轉換列表:
2.顯式型別轉換
顯式型別轉換,即強制型別轉換。顯式轉換需要強制轉換運算子,而且強制轉換會造成資料丟失。
源型別
目標型別
sbyte
byte,ushort,uint,ulong,或char
byte
sbyte或char
short
sbyte,byte,ushort,uint,ulong,或char
ushort
sbyte,byte,short,或char
intsbyte,byte,short,ushort,uint,ulong,或char
uint
sbyte,byte,short,ushort,int,或char
long
sbyte,byte,short,ushort,int,uint,ulong,或char
ulong
sbyte,byte,short,ushort,int,uint,long,或char
float
sbyte,byte,short,ushort,int,uint,long,ulong,char,或decimal
double
sbyte,byte,short,ushort,int,uint,long,ulong,char,float,或decimal
decimal
sbyte,byte,short,ushort,int,uint,long,ulong,char,float,或double
char
sbyte,byte,或short
顯示型別裝換的方法:
1.前置型別轉換,例如:
double dbtotal = 12345678910.4562.型別解析轉換,如int.parse(),int32.parse()等採用方法來轉換.;int i = (int)dbtotal;//
此處運用了強制轉換
string str = "注意:str除掉引號的型別必須和*.parse的型別一致。如果將100改成100.78,即變成float型別,執行時將會報錯"輸入字串的格式不正確."100"
;int i = int.parse(str);
3.採用字尾式轉換,如k.tostring(),一般運用於字串或日期等其它型別
int i = 1004.採用convert類來實現轉換,該類基本支援所有型別之間的轉換;string s = i.tostring();
string str = "注意:str除掉引號的型別必須和convert.*的型別一致。如果將100改成100.78,即變成float型別,執行時將會報錯"輸入字串的格式不正確."100"
;inti = convert.toint32(str);
C 中隱式型別轉換和顯示型別轉換
c 支援隱式型別轉換,但前提是不損失資料精度。而c和c 不同的是,即使損失精度也會自動轉換。如 int x double y y 2.7 x y 假使賦值操作真被執行,那麼y值的小數部分將被擷取,x取得值2。這樣就發生了精度損失,或稱窄化轉換。c或c 編譯器允許這樣的賦值,不出一聲就把值給截短 然而...
C 的隱式和顯示型別轉換
關於隱式轉換和顯示轉換,每種語言都有的,c 中當然也不例外。一般常用到的場合,一種是寫運算表示式的時候,要保持整體的資料型別一致和計算準確,比如有乙個變數a是int型,但是它是通過加減乘除得到的,那麼在運算中就要考慮用顯示轉換,除的運算需要轉換成float或double,再把結果強制轉換為int 再...
C 的隱式和顯示型別轉換
關於隱式轉換和顯示轉換,每種語言都有的,c 中當然也不例外。一般常用到的場合,一種是寫運算表示式的時候,要保持整體的資料型別一致和計算準確,比如有乙個變數a是int型,但是它是通過加減乘除得到的,那麼在運算中就要考慮用顯示轉換,除的運算需要轉換成float或double,再把結果強制轉換為int 再...