C#的隱式和顯示類型轉換

來源:互聯網
上載者:User
關於隱式轉換和顯示轉換,每種語言都有的,C#中當然也不例外。一般常用到的場合,一種是寫運算運算式的時候,要保持整體的資料類型一致和計算準確,比如有一個變數a是int型,但是它是通過加減乘除得到的,那麼在運算中就要考慮用顯示轉換,除的運算需要轉換成float或double,再把結果強制轉換為int;再一個就是傳參數的時候,需要注意哪些需要顯示轉換,或者對集合賦值的時候也要注意類型的問題。
1. 隱式類型轉換
所謂隱式轉換,就是系統預設的轉換,其本質是小儲存容量資料類型自動轉換為大儲存容量資料類型。有如下幾種:
從sbyte類型到short,int,long,float,double,或decimal類型。

從byte類型到short,ushort,int,uint,long,ulong,float,double,或decimal類型。

從short類型到int,long,float,double,或decimal類型。

從ushort類型到int,uint,long,ulong,float,double,或decimal類型。

從int類型到long,float,double,或decimal類型。

從uint類型到long,ulong,float,double,或decimal類型。

從long類型到float,double,或decimal類型。

從ulong類型到float,double,或decimal類型。

從char類型到ushort,int,uint,long,ulong,float,double,或decimal類型。

從float類型到double類型。


2.顯式類型轉換

顯式類型轉換,即強制類型轉換。與隱式轉換相反,而且強制轉換會造成資料丟失。

從sbyte到byte,ushort,uint,ulong,或char。

從byte到sbyte或char。

從short到sbyte,byte,ushort,uint,ulong,或char。

從ushort到sbyte,byte,short,或char。

從int到sbyte,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。

從char到sbyte,byte,或short。

從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。

當轉換有丟失資訊或導致異常拋出,轉換按照下列規則進行:

對於從一種整型到另一種整型的轉換,編譯器將針對轉換進行溢出檢測,如果沒有發生溢出,轉換成功,否則拋出一個OverflowException異常。這種檢測還與編譯器中是否設定了checked選項有關。

對於從float,double,或decimal到整型的轉換,源變數的值通過舍入到最接近的整型值作為轉換的結果。如果這個整型值超出了目標類型的範圍,則將拋出一個OverflowException異常。

對於從double到float的轉換,double值通過舍入取最接近的float值。如果這個值太小,結果將變成正0或負0;如果這個值太大,將變成正
無窮或負無窮。如果原double值是Nan,則轉換結果也是NaN。

對於從float或double到decimal的轉換,源值將轉換成小數形式並通過舍入取到小數點後28位(如果有必要的話)。如果源值太小,則結果為0;如果太大以致不能用小數表示,或是無窮和NaN,則將拋出InvalidCastException異常。

對於從decimal到float或double的轉換,小數的值通過舍入取最接近的值。這種轉換可能會丟失精度,但不會引起異常。

以上就是C#的隱式和顯示類型轉換的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.