Ketik tabel konversi di .NET
Pelebaran konversi terjadi ketika nilai satu jenis dikonversi ke jenis lain yang berukuran sama atau lebih besar. Konversi penyempitan terjadi ketika nilai satu jenis dikonversi ke nilai jenis lain yang berukuran lebih kecil. Tabel dalam topik ini menggambarkan perilaku yang ditunjukkan oleh kedua jenis konversi.
Melebarkan konversi
Tabel berikut menjelaskan konversi pelebaran yang dapat dilakukan tanpa kehilangan informasi.
Jenis | Dapat dikonversi tanpa kehilangan data ke |
---|---|
Byte | UInt16, , UInt32Int16, Int32, UInt64, Int64, Single, , Double,Decimal |
SByte | Int16, , Int32Int64, Single, , Double,Decimal |
Int16 | Int32, , Int64Single, , Double,Decimal |
UInt16 | UInt32, , Int32UInt64, Int64, Single, , Double,Decimal |
Char | UInt16, , Int32UInt32, UInt64, Int64, Single, , Double,Decimal |
Int32 | Int64, , DoubleDecimal |
UInt32 | Int64, , UInt64Double,Decimal |
Int64 | Decimal |
UInt64 | Decimal |
Single | Double |
Beberapa konversi pelebaran ke Single atau Double dapat menyebabkan hilangnya presisi. Tabel berikut menjelaskan konversi yang melebar yang terkadang mengakibatkan hilangnya informasi.
Jenis | Dapat dikonversi ke |
---|---|
Int32 | Single |
UInt32 | Single |
Int64 | Single, Double |
UInt64 | Single, Double |
Decimal | Single, Double |
Konversi yang mempersempit
Konversi yang mempersempit ke Single atau Double dapat menyebabkan hilangnya informasi. Jika jenis target tidak dapat mengekspresikan besaran sumber dengan benar, jenis yang dihasilkan diatur ke konstanta PositiveInfinity
atau NegativeInfinity
. PositiveInfinity
hasil dari pembagian angka positif dengan nol dan juga dikembalikan ketika nilai Single atau Double melebihi nilai MaxValue
bidang. NegativeInfinity
hasil dari pembagian angka positif dengan nol dan juga dikembalikan ketika nilai Single atau Double melebihi nilai MinValue
bidang. Konversi dari Double ke Single mungkin mengakibatkan PositiveInfinity
atau NegativeInfinity
.
Konversi penyempitan juga dapat mengakibatkan hilangnya informasi untuk jenis data lainnya. Namun, OverflowException dilepaskan jika nilai jenis yang sedang dikonversi berada di luar rentang yang ditentukan oleh jenis MaxValue
target dan MinValue
bidang, dan konversi diperiksa oleh runtime untuk memastikan bahwa nilai jenis target tidak melebihi MaxValue
atau MinValue
. Konversi yang dilakukan dengan kelas selalu diperiksa dengan System.Convert cara ini.
Tabel berikut mencantumkan konversi yang melepaskan OverflowException konversi menggunakan System.Convert atau konversi yang dicentang jika nilai jenis yang dikonversi berada di luar rentang yang ditentukan dari jenis yang dihasilkan.
Jenis | Dapat dikonversi ke |
---|---|
Byte | SByte |
SByte | Byte, , UInt16UInt32,UInt64 |
Int16 | Byte, , SByteUInt16 |
UInt16 | Byte, , SByteInt16 |
Int32 | Byte, , SByteInt16, , UInt16,UInt32 |
UInt32 | Byte, , SByteInt16, , UInt16,Int32 |
Int64 | Byte, , SByteInt16, UInt16, Int32, ,UInt32 , ,UInt64 |
UInt64 | Byte, , SByteInt16, UInt16, Int32, , UInt32,Int64 |
Decimal | Byte, , Int16SByte, UInt16, Int32, UInt32, , Int64,UInt64 |
Single | Byte, , Int16SByte, UInt16, Int32, UInt32, , Int64,UInt64 |
Double | Byte, , Int16SByte, UInt16, Int32, UInt32, , Int64,UInt64 |