Megosztás a következőn keresztül:


Konvertálási táblák beírása a .NET-ben

A szélesítés akkor fordul elő, ha az egyik típus értékét egy másik, egyenlő vagy nagyobb méretű típussá alakítja át a rendszer. A szűkítő konverzió akkor fordul elő, ha egy adott típusú érték egy másik, kisebb méretű értékké alakul át. A témakör táblázatai mindkét konverziótípus viselkedését szemléltetik.

Átalakítások szélesedése

Az alábbi táblázat az információvesztés nélkül elvégezhető átalakításokat ismerteti.

Típus Adatvesztés nélkül átalakítható
Byte UInt16, Int16, UInt32, Int32UInt64, Int64, Single, , DoubleDecimal
SByte Int16, Int32, Int64, SingleDoubleDecimal
Int16 Int32, Int64, Single, DoubleDecimal
UInt16 UInt32, Int32, UInt64, Int64Single, DoubleDecimal
Char UInt16, UInt32, Int32, UInt64Int64, Single, DoubleDecimal
Int32 Int64, , DoubleDecimal
UInt32 Int64, UInt64, DoubleDecimal
Int64 Decimal
UInt64 Decimal
Single Double

Egyes átalakítások Single pontosságvesztést okozhatnak vagy Double okozhatnak. Az alábbi táblázat azokat az átalakításokat ismerteti, amelyek időnként adatvesztést eredményeznek.

Típus Átalakítható
Int32 Single
UInt32 Single
Int64 Single, Double
UInt64 Single, Double
Decimal Single, Double

Konverziók szűkítése

A szűkülő átalakítás Single információvesztést okozhat vagy Double okozhat. Ha a céltípus nem tudja megfelelően kifejezni a forrás nagyságát, az eredményül kapott típus állandóra PositiveInfinity vagy NegativeInfinity. PositiveInfinity eredménye egy pozitív szám nullával való felosztása Single , és akkor is vissza lesz adva, ha a mező értéke meghaladja vagy Double meghaladja a MaxValue mező értékét. NegativeInfinity negatív szám nullával való osztásából Single származik, és akkor is vissza lesz adva, ha egy érték vagy Double a mező értéke MinValue alá esik. Az a-ról Double a-ra Single történő átalakítás eredménye PositiveInfinity lehet a következő: vagy NegativeInfinity.

A szűkülő átalakítás más adattípusok információvesztését is eredményezheti. A rendszer azonban akkor ad vissza egy OverflowException értéket, ha az átalakítandó típus értéke kívül esik a céltípus MaxValue és MinValue a mezők által megadott tartományon, és az átalakítást a futtatókörnyezet ellenőrzi annak biztosítása érdekében, hogy a céltípus értéke ne haladja meg MaxValue a céltípus értékét.MinValue Az osztálysal System.Convert végrehajtott átalakítások mindig így vannak ellenőrizve.

Az alábbi táblázat azokat a konverziókat sorolja fel, amelyek használatot OverflowExceptionSystem.Convert vagy ellenőrzött átalakítást eredményeznek, ha a konvertálandó típus értéke kívül esik az eredményül kapott típus megadott tartományán.

Típus Átalakítható
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, UInt16Int32,UInt32,UInt64
UInt64 Byte, SByte, Int16, UInt16Int32, UInt32Int64
Decimal Byte, SByte, Int16, UInt16Int32, UInt32, Int64UInt64
Single Byte, SByte, Int16, UInt16Int32, UInt32, Int64UInt64
Double Byte, SByte, Int16, UInt16Int32, UInt32, Int64UInt64

Lásd még