Conversietabellen typen in .NET
De conversie wordt breder wanneer een waarde van het ene type wordt geconverteerd naar een ander type dat gelijk is aan of groter is. Een kleinere conversie treedt op wanneer een waarde van het ene type wordt geconverteerd naar een waarde van een ander type dat van een kleinere grootte is. De tabellen in dit onderwerp illustreren het gedrag van beide typen conversies.
Conversies breder maken
In de volgende tabel worden de verbrekingsconversies beschreven die zonder gegevensverlies kunnen worden uitgevoerd.
Type | Kan worden geconverteerd zonder gegevensverlies naar |
---|---|
Byte | UInt16, , UInt32Int16, Int32, , UInt64, Int64, DoubleSingleDecimal |
SByte | Int16, , Int32Int64, Single, , , DoubleDecimal |
Int16 | Int32Single, Int64, DoubleDecimal |
UInt16 | UInt32, , Int32UInt64, Int64, , Single, , DoubleDecimal |
Char | UInt16, , UInt32Int32, UInt64, , Int64, , SingleDoubleDecimal |
Int32 | Int64, , DoubleDecimal |
UInt32 | Int64, , , UInt64DoubleDecimal |
Int64 | Decimal |
UInt64 | Decimal |
Single | Double |
Sommige verbrekingsconversies naar Single of Double kunnen leiden tot verlies van precisie. In de volgende tabel worden de verbrekingsconversies beschreven die soms leiden tot verlies van informatie.
Type | Kan worden geconverteerd naar |
---|---|
Int32 | Single |
UInt32 | Single |
Int64 | Single, Double |
UInt64 | Single, Double |
Decimal | Single, Double |
Conversies beperken
Een vermalingsconversie naar Single of Double kan leiden tot verlies van informatie. Als het doeltype de grootte van de bron niet goed kan uitdrukken, wordt het resulterende type ingesteld op de constante PositiveInfinity
of NegativeInfinity
. PositiveInfinity
resulteert in het delen van een positief getal door nul en wordt ook geretourneerd wanneer de waarde van een Single of Double meer waarde van het MaxValue
veld is. NegativeInfinity
resultaten van het delen van een negatief getal door nul en worden ook geretourneerd wanneer de waarde van een Single of Double lager is dan de waarde van het MinValue
veld. Een conversie van een Double naar een Single kan leiden tot PositiveInfinity
of NegativeInfinity
.
Een narrowing conversie kan ook leiden tot verlies van informatie voor andere gegevenstypen. Er wordt echter een OverflowException gegenereerd als de waarde van een type dat wordt geconverteerd buiten het bereik valt dat is opgegeven door de doeltypen MaxValue
en MinValue
velden, en de conversie wordt gecontroleerd door de runtime om ervoor te zorgen dat de waarde van het doeltype niet groter is dan MaxValue
of MinValue
. Conversies die met de System.Convert klasse worden uitgevoerd, worden altijd op deze manier gecontroleerd.
De volgende tabel bevat conversies die een OverflowException gebruiks- System.Convert of een gecontroleerde conversie genereert als de waarde van het type dat wordt geconverteerd buiten het gedefinieerde bereik van het resulterende type valt.
Type | Kan worden geconverteerd naar |
---|---|
Byte | SByte |
SByte | Byte, , , UInt16UInt32UInt64 |
Int16 | Byte, , SByteUInt16 |
UInt16 | Byte, , SByteInt16 |
Int32 | ByteInt16, SByte, UInt16UInt32 |
UInt32 | ByteInt16, SByte, UInt16Int32 |
Int64 | Byte, , SByteInt16, UInt16, , , Int32,UInt32UInt64 |
UInt64 | Byte, , SByteInt16, UInt16, , Int32, , UInt32Int64 |
Decimal | Byte, , SByteInt16, UInt16, , Int32, , UInt32Int64UInt64 |
Single | Byte, , SByteInt16, UInt16, , Int32, , UInt32Int64UInt64 |
Double | Byte, , SByteInt16, UInt16, , Int32, , UInt32Int64UInt64 |