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 |