Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Расширяющее преобразование — это преобразование, при котором значение одного типа преобразуется в другой тип равного или большего размера. Сужающее преобразование — это преобразование, при котором значение одного типа преобразуется в другой тип меньшего размера. Таблицы в этом разделе описывают характеристики обоих типов преобразований.
Расширение преобразований
В следующей таблице описаны расширяющие преобразования, которые можно выполнять без потери данных.
| Тип | Можно без потери данных преобразовать в |
|---|---|
| Byte | UInt16, Int16UInt32Int32UInt64Int64SingleDoubleDecimal |
| SByte | Int16, , Int32SingleInt64Double,Decimal |
| Int16 | Int32, , Int64Single, DoubleDecimal |
| UInt16 | UInt32, Int32, UInt64Int64SingleDoubleDecimal |
| Char | UInt16, UInt32, Int32UInt64Int64SingleDoubleDecimal |
| Int32 | Int64, , DoubleDecimal |
| UInt32 | Int64, , UInt64DoubleDecimal |
| Int64 | Decimal |
| UInt64 | Decimal |
| Single | Double |
Некоторые расширяющие преобразования к типу Single или Double могут привести к потере точности. В следующей таблице описаны расширяющие преобразования, которые могут привести к частичной потере данных.
| Тип | Можно преобразовать в |
|---|---|
| Int32 | Single |
| UInt32 | Single |
| Int64 | Single, Double |
| UInt64 | Single, Double |
| Decimal | Single, Double |
Сужение преобразований
Сужающее преобразование к типу Single или Double может привести к потере данных. Если целевой тип не позволяет должным образом выразить порядок величины исходного типа, то результирующий тип будет приравнен к константе PositiveInfinity или NegativeInfinity. PositiveInfinity возникает в результате деления положительного числа на ноль, а также в том случае, если значение типа Single или Double превышает значение поля MaxValue. NegativeInfinity возникает в результате деления отрицательного числа на ноль, а также в том случае, если значение типа Single или Double ниже значения поля MinValue. Результат преобразования из Double в Single может быть равен PositiveInfinity или NegativeInfinity.
Сужающее преобразование может также приводить к потере данных и для других типов данных. Тем не менее, если значение преобразуемого типа выходит за пределы диапазона, заданные в полях MaxValue и MinValue для целевого типа, возникает исключение OverflowException. Среда выполнения проверяет преобразование, чтобы гарантировать соблюдение ограничений MaxValue и MinValue для целевого типа. Преобразования, выполняемые с помощью класса System.Convert, всегда проверяются подобным образом.
В следующей таблице приведен список преобразований, порождающих исключение OverflowException при использовании System.Convert или любого преобразования с проверкой, если значение преобразуемого типа находится вне диапазона, определенного для результирующего типа.
| Тип | Можно преобразовать в |
|---|---|
| Byte | SByte |
| SByte | Byte, , UInt16UInt32UInt64 |
| Int16 | Byte, , SByteUInt16 |
| UInt16 | Byte, , SByteInt16 |
| Int32 | Byte, , SByteInt16, UInt16UInt32 |
| UInt32 | Byte, , SByteInt16, UInt16Int32 |
| Int64 | Byte, SByte, Int16, UInt16Int32, ,UInt32UInt64 |
| UInt64 | Byte, SByte, Int16UInt16Int32UInt32Int64 |
| Decimal | Byte, SByte, Int16UInt16Int32UInt32Int64UInt64 |
| Single | Byte, SByte, Int16UInt16Int32UInt32Int64UInt64 |
| Double | Byte, SByte, Int16UInt16Int32UInt32Int64UInt64 |