Skriv konverteringstabeller i .NET
En utvidgad konvertering sker när ett värde av en typ konverteras till en annan typ som är lika stor eller större. En begränsad konvertering sker när ett värde av en typ konverteras till ett värde av en annan typ som har en mindre storlek. Tabellerna i det här avsnittet illustrerar de beteenden som visas av båda typerna av konverteringar.
Bredda konverteringar
I följande tabell beskrivs de bredare konverteringar som kan utföras utan förlust av information.
Typ | Kan konverteras utan dataförlust till |
---|---|
Byte | UInt16, Int16, UInt32, Int32, UInt64, Int64, , Single, , DoubleDecimal |
SByte | Int16, Int32, Int64, Single, , , DoubleDecimal |
Int16 | Int32, Int64, Single, , , DoubleDecimal |
UInt16 | UInt32, Int32, UInt64, Int64, Single, , , DoubleDecimal |
Char | UInt16, UInt32, Int32, UInt64, Int64, , Single, , DoubleDecimal |
Int32 | Int64, , DoubleDecimal |
UInt32 | Int64, UInt64, , DoubleDecimal |
Int64 | Decimal |
UInt64 | Decimal |
Single | Double |
Vissa bredare konverteringar till Single eller Double kan orsaka förlust av precision. I följande tabell beskrivs de bredare konverteringar som ibland resulterar i förlust av information.
Typ | Kan konverteras till |
---|---|
Int32 | Single |
UInt32 | Single |
Int64 | Single, Double |
UInt64 | Single, Double |
Decimal | Single, Double |
Begränsa konverteringar
En begränsad konvertering till Single eller Double kan orsaka informationsförlust. Om måltypen inte korrekt kan uttrycka källans storlek anges den resulterande typen till konstanten PositiveInfinity
eller NegativeInfinity
. PositiveInfinity
resultat från att dividera ett positivt tal med noll och returneras också när värdet för ett Single eller Double överskrider värdet för fältet MaxValue
. NegativeInfinity
resultat från att dividera ett negativt tal med noll och returneras också när värdet för en Single eller Double understiger värdet för fältet MinValue
. En konvertering från en Double till en Single kan resultera i PositiveInfinity
eller NegativeInfinity
.
En begränsad konvertering kan också leda till förlust av information för andra datatyper. Ett utlöses dock OverflowException om värdet för en typ som konverteras ligger utanför det intervall som anges av måltypens MaxValue
och MinValue
fälten, och konverteringen kontrolleras av körningen för att säkerställa att värdet för måltypen inte överskrider dess MaxValue
eller MinValue
. Konverteringar som utförs med System.Convert klassen kontrolleras alltid på det här sättet.
I följande tabell visas konverteringar som utlöser en OverflowException användningskonvertering System.Convert eller en markerad konvertering om värdet för den typ som konverteras ligger utanför det definierade intervallet för den resulterande typen.
Typ | Kan konverteras till |
---|---|
Byte | SByte |
SByte | Byte, UInt16, , UInt32UInt64 |
Int16 | Byte, , SByteUInt16 |
UInt16 | Byte, , SByteInt16 |
Int32 | Byte, SByte, Int16, , , UInt16UInt32 |
UInt32 | Byte, SByte, Int16, , , UInt16Int32 |
Int64 | Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64 |
UInt64 | Byte, SByte, Int16, UInt16, Int32, , , UInt32Int64 |
Decimal | Byte, SByte, Int16, UInt16, Int32, , UInt32, , Int64UInt64 |
Single | Byte, SByte, Int16, UInt16, Int32, , UInt32, , Int64UInt64 |
Double | Byte, SByte, Int16, UInt16, Int32, , UInt32, , Int64UInt64 |