Бөлісу құралы:


BigInteger.Explicit Оператор

Определение

Определяет явное преобразование между объектом и другим типом BigInteger .

Перегрузки

Имя Описание
Explicit(BigInteger to BFloat16)
Explicit(Single to BigInteger)

Определяет явное преобразование Single значения в BigInteger значение.

Explicit(Complex to BigInteger)

Явно преобразует Complex значение в большое целое число.

Explicit(BigInteger to UIntPtr)

Явно преобразует большое целое число в UIntPtr значение.

Explicit(BigInteger to UInt64)

Определяет явное преобразование BigInteger объекта в 64-разрядное целое число без знака.

Этот API несовместим с CLS. Ниже приведена Doubleальтернатива.

Explicit(BigInteger to UInt32)

Определяет явное преобразование BigInteger объекта в 32-разрядное целое число без знака.

Этот API несовместим с CLS. Ниже приведена Int64альтернатива.

Explicit(BigInteger to UInt16)

Определяет явное преобразование BigInteger объекта в 16-разрядное целое число без знака.

Этот API несовместим с CLS. Ниже приведена Int32альтернатива.

Explicit(BigInteger to UInt128)

Явно преобразует большое целое число в UInt128 значение.

Explicit(BigInteger to Single)

Определяет явное преобразование BigInteger объекта в значение с плавающей запятой с одной точностью.

Explicit(BigInteger to SByte)

Определяет явное преобразование BigInteger объекта в 8-разрядное значение со знаком.

Этот API несовместим с CLS. Ниже приведена Int16альтернатива.

Explicit(BigInteger to Int64)

Определяет явное преобразование BigInteger объекта в 64-разрядное целое число со знаком.

Explicit(BigInteger to IntPtr)

Явно преобразует большое целое число в IntPtr значение.

Explicit(BigInteger to Int16)

Определяет явное преобразование BigInteger объекта в 16-разрядное целое число со знаком.

Explicit(BigInteger to Int128)

Явно преобразует большое целое число в Int128 значение.

Explicit(BigInteger to Half)

Явно преобразует большое целое число в Half значение.

Explicit(BigInteger to Double)

Определяет явное преобразование BigInteger объекта в Double значение.

Explicit(BigInteger to Decimal)

Определяет явное преобразование BigInteger объекта в Decimal значение.

Explicit(BigInteger to Char)

Явно преобразует большое целое число в Char значение.

Explicit(BigInteger to Byte)

Определяет явное преобразование BigInteger объекта в значение без знака байтов.

Explicit(BFloat16 to BigInteger)
Explicit(Half to BigInteger)

Явно преобразует Half значение в большое целое число.

Explicit(Double to BigInteger)

Определяет явное преобразование Double значения в BigInteger значение.

Explicit(Decimal to BigInteger)

Определяет явное преобразование Decimal объекта в BigInteger значение.

Explicit(BigInteger to Int32)

Определяет явное преобразование BigInteger объекта в 32-разрядное целое число со знаком.

Explicit(BigInteger to BFloat16)

public:
 static explicit operator System::Numerics::BFloat16(System::Numerics::BigInteger value);
public static explicit operator System.Numerics.BFloat16(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> System.Numerics.BFloat16
Public Shared Narrowing Operator CType (value As BigInteger) As BFloat16

Параметры

value
BigInteger

Возвращаемое значение

Применяется к

Explicit(Single to BigInteger)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Определяет явное преобразование Single значения в BigInteger значение.

public:
 static explicit operator System::Numerics::BigInteger(float value);
public static explicit operator System.Numerics.BigInteger(float value);
static member op_Explicit : single -> System.Numerics.BigInteger
Public Shared Narrowing Operator CType (value As Single) As BigInteger

Параметры

value
Single

Значение, преобразуемое в .BigInteger

Возвращаемое значение

Объект, содержащий значение value параметра.

Исключения

Примеры

В следующем примере отдельные элементы в массиве значений SingleBigInteger преобразуются в объекты, а затем отображаются результаты каждого преобразования. Обратите внимание, что любая дробная часть Single значения усечена во время преобразования.

float[] singles = { Single.MinValue, -1.430955172e03f, 2.410970032e05f,
                    Single.MaxValue, Single.PositiveInfinity,
                     Single.NegativeInfinity, Single.NaN };
BigInteger number;

Console.WriteLine("{0,37} {1,37}\n", "Single", "BigInteger");

foreach (float value in singles)
{
   try {
      number = (BigInteger) value;
      Console.WriteLine("{0,37} {1,37}", value, number);
   }
   catch (OverflowException) {
      Console.WriteLine("{0,37} {1,37}", value, "OverflowException");
   }
}
// The example displays the following output:
//           Single                            BigInteger
//
//    -3.402823E+38   -3.4028234663852885981170418348E+38
//        -1430.955                                 -1430
//           241097                                241097
//     3.402823E+38    3.4028234663852885981170418348E+38
//         Infinity                     OverflowException
//        -Infinity                     OverflowException
//              NaN                     OverflowException
let singles =
    [| Single.MinValue
       -1.430955172e03f
       2.410970032e05f
       Single.MaxValue
       Single.PositiveInfinity
       Single.NegativeInfinity
       Single.NaN |]

printfn "%37s %37s\n" "Single" "BigInteger"

for value in singles do
    try
        let number = BigInteger(value)
        printfn "%37O %37O" value number
    with :? OverflowException ->
        printfn "%37O %37s" value "OverflowException"
// The example displays the following output:
//           Single                            BigInteger
//
//    -3.402823E+38   -3.4028234663852885981170418348E+38
//        -1430.955                                 -1430
//           241097                                241097
//     3.402823E+38    3.4028234663852885981170418348E+38
//         Infinity                     OverflowException
//        -Infinity                     OverflowException
//              NaN                     OverflowException
Dim singles() As Single = { Single.MinValue, -1.430955172e03, 2.410970032e05, 
                            Single.MaxValue, Single.PositiveInfinity, 
                            Single.NegativeInfinity, Single.NaN }
Dim number As BigInteger

Console.WriteLine("{0,37} {1,37}", "Single", "BigInteger")
Console.WriteLine()
For Each value As Single In singles
   Try
      number = CType(value, BigInteger)
      Console.WriteLine("{0,37} {1,37}", value, number)
   Catch e As OverflowException
      Console.WriteLine("{0,37} {1,37}", value, "OverflowException")
   End Try
Next     
' The example displays the following output:
'           Single                            BigInteger
' 
'    -3.402823E+38   -3.4028234663852885981170418348E+38
'        -1430.955                                 -1430
'           241097                                241097
'     3.402823E+38    3.4028234663852885981170418348E+38
'         Infinity                     OverflowException
'        -Infinity                     OverflowException
'              NaN                     OverflowException

Комментарии

Перед преобразованием любая дробная часть value параметра усечена.

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Так как преобразование из SingleBigInteger этого может включать усечение любой valueдробной части, компиляторы языка не выполняют это преобразование автоматически. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CType , в Visual Basic). В противном случае они отображают ошибку компилятора.

Для языков, которые не поддерживают пользовательские операторы, альтернативный метод — BigInteger.BigInteger(Single).

Применяется к

Explicit(Complex to BigInteger)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Явно преобразует Complex значение в большое целое число.

public:
 static explicit operator System::Numerics::BigInteger(System::Numerics::Complex value);
public static explicit operator System.Numerics.BigInteger(System.Numerics.Complex value);
static member op_Explicit : System.Numerics.Complex -> System.Numerics.BigInteger
Public Shared Narrowing Operator CType (value As Complex) As BigInteger

Параметры

value
Complex

Преобразуемое значение .

Возвращаемое значение

value преобразуется в большое целое число.

Применяется к

Explicit(BigInteger to UIntPtr)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Внимание

Этот API несовместим с CLS.

Явно преобразует большое целое число в UIntPtr значение.

public:
 static explicit operator UIntPtr(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator UIntPtr(System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> unativeint
Public Shared Narrowing Operator CType (value As BigInteger) As UIntPtr

Параметры

value
BigInteger

Преобразуемое значение .

Возвращаемое значение

UIntPtr

unativeint

value преобразуется в UIntPtr значение.

Атрибуты

Применяется к

Explicit(BigInteger to UInt64)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Внимание

Этот API несовместим с CLS.

Альтернативный вариант, совместимый с CLS
System.Double

Определяет явное преобразование BigInteger объекта в 64-разрядное целое число без знака.

Этот API несовместим с CLS. Ниже приведена Doubleальтернатива.

public:
 static explicit operator System::UInt64(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator ulong(System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> uint64
Public Shared Narrowing Operator CType (value As BigInteger) As ULong

Параметры

value
BigInteger

Значение для преобразования в 64-разрядное целое число без знака.

Возвращаемое значение

Объект, содержащий значение value параметра.

Атрибуты

Исключения

value меньше UInt64.MinValue или больше UInt64.MaxValue.

Примеры

В следующем примере показано преобразование значений BigIntegerUInt64 . Он также обрабатывает OverflowException исключение, так как BigInteger значение выходит за пределы диапазона UInt64 типа данных.

// BigInteger to UInt64 conversion.
BigInteger goodULong = 2000000000;
BigInteger badULong = BigInteger.Pow(goodULong, 3);

ulong uLongFromBigInteger;

// Successful conversion using cast operator.
uLongFromBigInteger = (ulong) goodULong;
Console.WriteLine(uLongFromBigInteger);

// Handle conversion that should result in overflow.
try
{
   uLongFromBigInteger = (ulong) badULong;
   Console.WriteLine(uLongFromBigInteger);
}
catch (OverflowException e)
{
   Console.WriteLine("Unable to convert {0}:\n   {1}",
                     badULong, e.Message);
}
Console.WriteLine();
// BigInteger to UInt64 conversion.
let goodULong = bigint 2000000000
let badULong = BigInteger.Pow(goodULong, 3)

// Successful conversion using cast operator.
let uLongFromBigInteger = uint64 goodULong
printfn $"{uLongFromBigInteger}"

// Handle conversion that should result in overflow.
try
    let uLongFromBigInteger = uint64 badULong
    printfn $"{uLongFromBigInteger}"
with :? OverflowException as e ->
    printfn $"Unable to convert {badULong}:\n   {e.Message}"
' BigInteger to UInt64 conversion.
Dim goodULong As BigInteger = 2000000000
Dim badULong As BigInteger = BigInteger.Pow(goodULong, 3)

Dim uLongFromBigInteger As ULong

' Convert using CType function.
uLongFromBigInteger = CType(goodULong, ULong)
Console.WriteLine(uLongFromBigInteger)
' Convert using CULng function.
uLongFromBigInteger = CULng(goodULong)
Console.WriteLine(uLongFromBigInteger)

' Handle conversion that should result in overflow.
Try
   uLongFromBigInteger = CType(badULong, ULong)
   Console.WriteLine(uLongFromBigInteger)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0}:{1}   {2}", _
                     badULong, vbCrLf, e.Message)
End Try
Console.WriteLine()

Комментарии

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Компиляторы языка не выполняют это преобразование автоматически, так как это может привести к потере данных. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CTypeCULng , в Visual Basic). В противном случае они отображают ошибку компилятора.

Так как эта операция определяет сужающее преобразование, оно может вызвать OverflowException вызов во время выполнения, если BigInteger значение выходит за пределы диапазона UInt64 типа данных. В результирующем UInt64 значении нет потери точности, если преобразование выполнено успешно.

Применяется к

Explicit(BigInteger to UInt32)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Внимание

Этот API несовместим с CLS.

Альтернативный вариант, совместимый с CLS
System.Int64

Определяет явное преобразование BigInteger объекта в 32-разрядное целое число без знака.

Этот API несовместим с CLS. Ниже приведена Int64альтернатива.

public:
 static explicit operator System::UInt32(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator uint(System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> uint32
Public Shared Narrowing Operator CType (value As BigInteger) As UInteger

Параметры

value
BigInteger

Значение для преобразования в 32-разрядное целое число без знака.

Возвращаемое значение

Объект, содержащий значение value параметра.

Атрибуты

Исключения

value меньше UInt32.MinValue или больше UInt32.MaxValue.

Примеры

В следующем примере показано преобразование значений BigIntegerUInt32 . Он также обрабатывает OverflowException исключение, так как BigInteger значение выходит за пределы диапазона UInt32 типа данных.

// BigInteger to UInt32 conversion.
BigInteger goodUInteger = 200000;
BigInteger badUInteger = 65000000000;

uint uIntegerFromBigInteger;

// Successful conversion using cast operator.
uIntegerFromBigInteger = (uint) goodInteger;
Console.WriteLine(uIntegerFromBigInteger);

// Handle conversion that should result in overflow.
try
{
   uIntegerFromBigInteger = (uint) badUInteger;
   Console.WriteLine(uIntegerFromBigInteger);
}
catch (OverflowException e)
{
   Console.WriteLine("Unable to convert {0}:\n   {1}",
                     badUInteger, e.Message);
}
Console.WriteLine();
// BigInteger to UInt32 conversion.
let goodUInteger = bigint 200000
let badUInteger = bigint 65000000000L

// Successful conversion using cast operator.
let uIntegerFromBigInteger = uint goodInteger
printfn $"{uIntegerFromBigInteger}"

// Handle conversion that should result in overflow.
try
    let uIntegerFromBigInteger = uint badUInteger
    printfn $"{uIntegerFromBigInteger}"
with :? OverflowException as e ->
    printfn $"Unable to convert {badUInteger}:\n   {e.Message}"
' BigInteger to UInt32 conversion.
Dim goodUInteger As BigInteger = 200000
Dim badUInteger As BigInteger = 65000000000

Dim uIntegerFromBigInteger As UInteger

' Convert using CType function.
uIntegerFromBigInteger = CType(goodInteger, UInteger)
Console.WriteLine(uIntegerFromBigInteger)
' Convert using CUInt function.
uIntegerFromBigInteger = CUInt(goodInteger)
Console.WriteLine(uIntegerFromBigInteger)

' Handle conversion that should result in overflow.
Try
   uIntegerFromBigInteger = CType(badUInteger, UInteger)
   Console.WriteLine(uIntegerFromBigInteger)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0}:{1}   {2}", _
                     badUInteger, vbCrLf, e.Message)
End Try
Console.WriteLine()

Комментарии

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Компиляторы языка не выполняют это преобразование автоматически, так как это может привести к потере данных. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CTypeCUInt , в Visual Basic). В противном случае они отображают ошибку компилятора.

Так как эта операция определяет сужающее преобразование, оно может вызвать OverflowException вызов во время выполнения, если BigInteger значение выходит за пределы диапазона UInt32 типа данных. В результирующем UInt32 значении нет потери точности, если преобразование выполнено успешно.

Применяется к

Explicit(BigInteger to UInt16)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Внимание

Этот API несовместим с CLS.

Альтернативный вариант, совместимый с CLS
System.Int32

Определяет явное преобразование BigInteger объекта в 16-разрядное целое число без знака.

Этот API несовместим с CLS. Ниже приведена Int32альтернатива.

public:
 static explicit operator System::UInt16(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator ushort(System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> uint16
Public Shared Narrowing Operator CType (value As BigInteger) As UShort

Параметры

value
BigInteger

Значение для преобразования в 16-разрядное целое число без знака.

Возвращаемое значение

Объект, содержащий значение value параметра.

Атрибуты

Исключения

value меньше UInt16.MinValue или больше UInt16.MaxValue.

Примеры

В следующем примере показано преобразование значений BigIntegerUInt16 . Он также обрабатывает OverflowException исключение, так как BigInteger значение выходит за пределы диапазона UInt16 типа данных.

// BigInteger to UInt16 conversion.
BigInteger goodUShort = 20000;
BigInteger badUShort = 66000;

ushort uShortFromBigInteger;

// Successful conversion using cast operator.
uShortFromBigInteger = (ushort) goodUShort;
Console.WriteLine(uShortFromBigInteger);

// Handle conversion that should result in overflow.
try
{
   uShortFromBigInteger = (ushort) badUShort;
   Console.WriteLine(uShortFromBigInteger);
}
catch (OverflowException e)
{
   Console.WriteLine("Unable to convert {0}:\n   {1}",
                     badUShort, e.Message);
}
Console.WriteLine();
// BigInteger to UInt16 conversion.
let goodUShort = bigint 20000
let badUShort = bigint 66000

// Successful conversion using cast operator.
let uShortFromBigInteger = uint16 goodUShort
printfn $"{uShortFromBigInteger}"

// Handle conversion that should result in overflow.
try
    let uShortFromBigInteger = uint16 badUShort
    printfn $"{uShortFromBigInteger}"
with :? OverflowException as e ->
    printfn $"Unable to convert {badSByte}:\n   {e.Message}"
' BigInteger to UInt16 conversion.
Dim goodUShort As BigInteger = 20000
Dim badUShort As BigInteger = 66000

Dim uShortFromBigInteger As UShort

' Convert using CType function.
uShortFromBigInteger = CType(goodUShort, UShort)
Console.WriteLine(uShortFromBigInteger)
' Convert using CUShort function.
uShortFromBigInteger = CUShort(goodUShort)
Console.WriteLine(uShortFromBigInteger)

' Handle conversion that should result in overflow.
Try
   uShortFromBigInteger = CType(badUShort, UShort)
   Console.WriteLine(uShortFromBigInteger)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0}:{1}   {2}", _
                     badUShort, vbCrLf, e.Message)
End Try
Console.WriteLine()

Комментарии

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Компиляторы языка не выполняют это преобразование автоматически, так как это может привести к потере данных. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CTypeCUShort , в Visual Basic). В противном случае они отображают ошибку компилятора.

Так как эта операция определяет сужающее преобразование, оно может вызвать OverflowException вызов во время выполнения, если BigInteger значение выходит за пределы диапазона UInt16 типа данных. В результирующем UInt16 значении нет потери точности, если преобразование выполнено успешно.

Применяется к

Explicit(BigInteger to UInt128)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Внимание

Этот API несовместим с CLS.

Явно преобразует большое целое число в UInt128 значение.

public:
 static explicit operator UInt128(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator UInt128(System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> UInt128
Public Shared Narrowing Operator CType (value As BigInteger) As UInt128

Параметры

value
BigInteger

Преобразуемое значение .

Возвращаемое значение

value преобразуется в UInt128 значение.

Атрибуты

Применяется к

Explicit(BigInteger to Single)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Определяет явное преобразование BigInteger объекта в значение с плавающей запятой с одной точностью.

public:
 static explicit operator float(System::Numerics::BigInteger value);
public static explicit operator float(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> single
Public Shared Narrowing Operator CType (value As BigInteger) As Single

Параметры

value
BigInteger

Значение для преобразования в значение с плавающей запятой с одной точностью.

Возвращаемое значение

Объект, содержащий ближайшее возможное представление value параметра.

Примеры

В следующем примере показано преобразование значений BigIntegerSingle .

// BigInteger to Single conversion.
BigInteger goodSingle = (BigInteger) 102.43e22F;
BigInteger badSingle = (BigInteger) float.MaxValue;
badSingle = badSingle * 2;

float singleFromBigInteger;

// Successful conversion using cast operator.
singleFromBigInteger = (float) goodSingle;
Console.WriteLine(singleFromBigInteger);

// Convert an out-of-bounds BigInteger value to a Single.
singleFromBigInteger = (float) badSingle;
Console.WriteLine(singleFromBigInteger);
// BigInteger to Single conversion.
let goodSingle = bigint 102.43e22F
let badSingle = bigint Single.MaxValue * bigint 2

// Successful conversion using cast operator.
let singleFromBigInteger = float32 goodSingle
printfn $"{singleFromBigInteger}"

// Convert an out-of-bounds BigInteger value to a Single.
let singleFromBigInteger = float32 badSingle
printfn $"{singleFromBigInteger}"
' BigInteger to Single conversion.
Dim goodSingle As BigInteger = 102.43e22
Dim badSingle As BigInteger = CType(Single.MaxValue, BigInteger)  
badSingle = badSingle * 2

Dim singleFromBigInteger As Single

' Convert using CType function.
singleFromBigInteger = CType(goodSingle, Single)
Console.WriteLine(singleFromBigInteger)
' Convert using CSng function.
singleFromBigInteger = CSng(goodSingle)
Console.WriteLine(singleFromBigInteger)

' Convert an out-of-bounds BigInteger value to a Single.
singleFromBigInteger = CType(badSingle, Single)
Console.WriteLine(singleFromBigInteger)

Комментарии

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Компиляторы языка не выполняют это преобразование автоматически, так как это может привести к потере данных или потере точности. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CTypeCSng , в Visual Basic). В противном случае они отображают ошибку компилятора.

BigInteger Так как значение может находиться за пределами Single диапазона типа данных, эта операция является сужающим преобразованием. Если преобразование не выполнено, он не создает OverflowExceptionисключение. Вместо этого, если BigInteger значение меньше Single.MinValue, результирующее Single значение равно Single.NegativeInfinity. BigInteger Если значение большеSingle.MaxValue, результирующее Single значение равноSingle.PositiveInfinity.

Преобразование объекта в a BigIntegerSingle может привести к потере точности. В некоторых случаях потеря точности может привести к успешному выполнению операции приведения или преобразования, даже если BigInteger значение выходит за пределы диапазона Single типа данных. Это показывается в следующем примере. Он назначает максимальное значение Single двух BigInteger переменных, увеличивает одну BigInteger переменную на 9,999e291 и проверяет две переменные для равенства. Как ожидалось, вызов BigInteger.Equals(BigInteger) метода показывает, что они не равны. Однако преобразование большего BigInteger значения обратно Single в успешное, хотя BigInteger значение в настоящее время превышается Single.MaxValue.

// Increase a BigInteger so it exceeds Single.MaxValue.
BigInteger number1 = (BigInteger) Single.MaxValue;
BigInteger number2 = number1;
number2 = number2 + (BigInteger) 9.999e30;
// Compare the BigInteger values for equality.
Console.WriteLine("BigIntegers equal: {0}", number2.Equals(number1));

// Convert the BigInteger to a Single.
float sng = (float) number2;

// Display the two values.
Console.WriteLine("BigInteger: {0}", number2);
Console.WriteLine("Single:     {0}", sng);
// The example displays the following output:
//       BigIntegers equal: False
//       BigInteger: 3.4028235663752885981170396038E+38
//       Single:     3.402823E+38
// Increase a BigInteger so it exceeds Single.MaxValue.
let number1 = bigint Single.MaxValue

let number2 = number1 + bigint 9.999e30
// Compare the BigInteger values for equality.
printfn $"BigIntegers equal: {number2.Equals number1}"

// Convert the BigInteger to a Single.
let sng = float32 number2

// Display the two values.
printfn $"BigInteger: {number2}"
printfn $"Single:     {sng}"
// The example displays the following output:
//       BigIntegers equal: False
//       BigInteger: 3.4028235663752885981170396038E+38
//       Single:     3.402823E+38
' Increase a BigInteger so it exceeds Single.MaxValue.
Dim number1 As BigInteger = CType(Single.MaxValue, BigInteger)
Dim number2 As BigInteger = number1
number2 = number2 + 9.999e30
' Compare the BigInteger values for equality.
Console.WriteLine("BigIntegers equal: {0}", number2.Equals(number1))

' Convert the BigInteger to a Single.
Dim sng As Single = CType(number2, Single)

' Display the two values.
Console.WriteLine("BigInteger: {0}", number2)
Console.WriteLine("Single:     {0}", sng)      
' The example displays the following output:
'       BigIntegers equal: False
'       BigInteger: 3.4028235663752885981170396038E+38
'       Single:     3.402823E+38

Применяется к

Explicit(BigInteger to SByte)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Внимание

Этот API несовместим с CLS.

Альтернативный вариант, совместимый с CLS
System.Int16

Определяет явное преобразование BigInteger объекта в 8-разрядное значение со знаком.

Этот API несовместим с CLS. Ниже приведена Int16альтернатива.

public:
 static explicit operator System::SByte(System::Numerics::BigInteger value);
[System.CLSCompliant(false)]
public static explicit operator sbyte(System.Numerics.BigInteger value);
[<System.CLSCompliant(false)>]
static member op_Explicit : System.Numerics.BigInteger -> sbyte
Public Shared Narrowing Operator CType (value As BigInteger) As SByte

Параметры

value
BigInteger

Значение для преобразования в 8-разрядное значение со знаком.

Возвращаемое значение

Объект, содержащий значение value параметра.

Атрибуты

Исключения

value меньше SByte.MinValue или больше SByte.MaxValue.

Примеры

В следующем примере показано преобразование значений BigIntegerSByte . Он также обрабатывает OverflowException исключение, так как BigInteger значение выходит за пределы диапазона SByte типа данных.

// BigInteger to SByte conversion.
BigInteger goodSByte = BigInteger.MinusOne;
BigInteger badSByte = -130;

sbyte sByteFromBigInteger;

// Successful conversion using cast operator.
sByteFromBigInteger = (sbyte) goodSByte;
Console.WriteLine(sByteFromBigInteger);

// Handle conversion that should result in overflow.
try
{
   sByteFromBigInteger = (sbyte) badSByte;
   Console.WriteLine(sByteFromBigInteger);
}
catch (OverflowException e)
{
   Console.WriteLine("Unable to convert {0}:\n   {1}",
                     badSByte, e.Message);
}
Console.WriteLine();
// BigInteger to SByte conversion.
let goodSByte = BigInteger.MinusOne
let badSByte = bigint -130

// Successful conversion using cast operator.
let sByteFromBigInteger = sbyte goodSByte
printfn $"{sByteFromBigInteger}"

// Handle conversion that should result in overflow.
try
    let sByteFromBigInteger = sbyte badSByte
    printfn $"{sByteFromBigInteger}"
with :? OverflowException as e ->
    printfn $"Unable to convert {badSByte}:\n   {e.Message}"
' BigInteger to SByte conversion.
Dim goodSByte As BigInteger = BigInteger.MinusOne
Dim badSByte As BigInteger = -130

Dim sByteFromBigInteger As SByte

' Convert using CType function.
sByteFromBigInteger = CType(goodSByte, SByte)
Console.WriteLine(sByteFromBigInteger)
' Convert using CSByte function.
sByteFromBigInteger = CSByte(goodSByte)
Console.WriteLine(sByteFromBigInteger)

' Handle conversion that should result in overflow.
Try
   sByteFromBigInteger = CType(badSByte, SByte)
   Console.WriteLine(sByteFromBigInteger)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0}:{1}   {2}", _
                     badSByte, vbCrLf, e.Message)
End Try
Console.WriteLine()

Комментарии

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Компиляторы языка не выполняют это преобразование автоматически, так как это может привести к потере данных. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CTypeCSByte , в Visual Basic). В противном случае они отображают ошибку компилятора.

Так как эта операция определяет сужающее преобразование, оно может вызвать OverflowException вызов во время выполнения, если BigInteger значение выходит за пределы диапазона SByte типа данных. В результирующем SByte значении нет потери точности, если преобразование выполнено успешно.

Применяется к

Explicit(BigInteger to Int64)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Определяет явное преобразование BigInteger объекта в 64-разрядное целое число со знаком.

public:
 static explicit operator long(System::Numerics::BigInteger value);
public static explicit operator long(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> int64
Public Shared Narrowing Operator CType (value As BigInteger) As Long

Параметры

value
BigInteger

Значение для преобразования в 64-разрядное целое число со знаком.

Возвращаемое значение

Объект, содержащий значение value параметра.

Исключения

value меньше Int64.MinValue или больше Int64.MaxValue.

Примеры

В следующем примере показано преобразование значений BigIntegerInt64 . Он также обрабатывает OverflowException исключение, так как BigInteger значение выходит за пределы диапазона Int64 типа данных.

// BigInteger to Int64 conversion.
BigInteger goodLong = 2000000000;
BigInteger badLong = BigInteger.Pow(goodLong, 3);

long longFromBigInteger;

// Successful conversion using cast operator.
longFromBigInteger = (long) goodLong;
Console.WriteLine(longFromBigInteger);

// Handle conversion that should result in overflow.
try
{
   longFromBigInteger = (long) badLong;
   Console.WriteLine(longFromBigInteger);
}
catch (OverflowException e)
{
   Console.WriteLine("Unable to convert {0}:\n   {1}",
                     badLong, e.Message);
}
Console.WriteLine();
// BigInteger to Int64 conversion.
let goodLong = 2000000000
let badLong = BigInteger.Pow(goodLong, 3)

// Successful conversion using cast operator.
let longFromBigInteger = int64 goodLong
printfn $"{longFromBigInteger}"

// Handle conversion that should result in overflow.
try
    let longFromBigInteger = int64 badLong
    printfn $"{longFromBigInteger}"
with :? OverflowException as e ->
    printfn $"Unable to convert {badLong}:\n   {e.Message}"
' BigInteger to Int64 conversion.
Dim goodLong As BigInteger = 2000000000
Dim badLong As BigInteger = BigInteger.Pow(goodLong, 3)

Dim longFromBigInteger As Long

' Convert using CType function.
longFromBigInteger = CType(goodLong, Long)
Console.WriteLine(longFromBigInteger)
' Convert using CLng function.
longFromBigInteger = CLng(goodLong)
Console.WriteLine(longFromBigInteger)

' Handle conversion that should result in overflow.
Try
   longFromBigInteger = CType(badLong, Long)
   Console.WriteLine(longFromBigInteger)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0}:{1}   {2}", _
                     badLong, vbCrLf, e.Message)
End Try
Console.WriteLine()

Комментарии

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Компиляторы языка не выполняют это преобразование автоматически, так как это может привести к потере данных. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CTypeCLng , в Visual Basic). В противном случае они отображают ошибку компилятора.

Так как эта операция определяет сужающее преобразование, оно может вызвать OverflowException вызов во время выполнения, если BigInteger значение выходит за пределы диапазона Int64 типа данных.

Применяется к

Explicit(BigInteger to IntPtr)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Явно преобразует большое целое число в IntPtr значение.

public:
 static explicit operator IntPtr(System::Numerics::BigInteger value);
public static explicit operator IntPtr(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> nativeint
Public Shared Narrowing Operator CType (value As BigInteger) As IntPtr

Параметры

value
BigInteger

Преобразуемое значение .

Возвращаемое значение

IntPtr

nativeint

value преобразуется в IntPtr значение.

Применяется к

Explicit(BigInteger to Int16)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Определяет явное преобразование BigInteger объекта в 16-разрядное целое число со знаком.

public:
 static explicit operator short(System::Numerics::BigInteger value);
public static explicit operator short(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> int16
Public Shared Narrowing Operator CType (value As BigInteger) As Short

Параметры

value
BigInteger

Значение для преобразования в 16-разрядное целое число со знаком.

Возвращаемое значение

Объект, содержащий значение value параметра.

Исключения

value меньше Int16.MinValue или больше Int16.MaxValue.

Примеры

В следующем примере показано преобразование значений BigIntegerInt16 . Он также обрабатывает OverflowException исключение, так как BigInteger значение выходит за пределы диапазона Int16 типа данных.

// BigInteger to Int16 conversion.
BigInteger goodShort = 20000;
BigInteger badShort = 33000;

short shortFromBigInteger;

// Successful conversion using cast operator.
shortFromBigInteger = (short) goodShort;
Console.WriteLine(shortFromBigInteger);

// Handle conversion that should result in overflow.
try
{
   shortFromBigInteger = (short) badShort;
   Console.WriteLine(shortFromBigInteger);
}
catch (OverflowException e)
{
   Console.WriteLine("Unable to convert {0}:\n   {1}",
                     badShort, e.Message);
}
Console.WriteLine();
// BigInteger to Int16 conversion.
let goodShort = bigint 20000
let badShort = bigint 33000

// Successful conversion using cast operator.
let shortFromBigInteger = int16 goodShort
printfn $"{shortFromBigInteger}"

// Handle conversion that should result in overflow.
try
    let shortFromBigInteger = int16 badShort
    printfn $"{shortFromBigInteger}"
with :? OverflowException as e ->
    printfn $"Unable to convert {badShort}:\n   {e.Message}"
' BigInteger to Int16 conversion.
Dim goodShort As BigInteger = 20000
Dim badShort As BigInteger = 33000

Dim shortFromBigInteger As Short

' Convert using CType function.
shortFromBigInteger = CType(goodShort, Short)
Console.WriteLine(shortFromBigInteger)
' Convert using CShort function.
shortFromBigInteger = CShort(goodShort)
Console.WriteLine(shortFromBigInteger)

' Handle conversion that should result in overflow.
Try
   shortFromBigInteger = CType(badShort, Short)
   Console.WriteLine(shortFromBigInteger)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0}:{1}   {2}", _
                     badShort, vbCrLf, e.Message)
End Try
Console.WriteLine()

Комментарии

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Компиляторы языка не выполняют это преобразование автоматически, так как это может привести к потере данных. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CTypeCShort , в Visual Basic). В противном случае они отображают ошибку компилятора.

Так как эта операция определяет сужающее преобразование, оно может вызвать OverflowException вызов во время выполнения, если BigInteger значение выходит за пределы диапазона Int16 типа данных. В результирующем Int16 значении нет потери точности, если преобразование выполнено успешно.

Применяется к

Explicit(BigInteger to Int128)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Явно преобразует большое целое число в Int128 значение.

public:
 static explicit operator Int128(System::Numerics::BigInteger value);
public static explicit operator Int128(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> Int128
Public Shared Narrowing Operator CType (value As BigInteger) As Int128

Параметры

value
BigInteger

Преобразуемое значение .

Возвращаемое значение

value преобразуется в Int128 значение.

Применяется к

Explicit(BigInteger to Half)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Явно преобразует большое целое число в Half значение.

public:
 static explicit operator Half(System::Numerics::BigInteger value);
public static explicit operator Half(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> Half
Public Shared Narrowing Operator CType (value As BigInteger) As Half

Параметры

value
BigInteger

Преобразуемое значение .

Возвращаемое значение

value преобразуется в Half значение.

Применяется к

Explicit(BigInteger to Double)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Определяет явное преобразование BigInteger объекта в Double значение.

public:
 static explicit operator double(System::Numerics::BigInteger value);
public static explicit operator double(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> double
Public Shared Narrowing Operator CType (value As BigInteger) As Double

Параметры

value
BigInteger

Значение, преобразуемое в .Double

Возвращаемое значение

Объект, содержащий значение value параметра.

Примеры

В следующем примере показано преобразование значений BigIntegerDouble .

// BigInteger to Double conversion.
BigInteger goodDouble = (BigInteger) 102.43e22;
BigInteger badDouble = (BigInteger) Double.MaxValue;
badDouble = badDouble * 2;

double doubleFromBigInteger;

// successful conversion using cast operator.
doubleFromBigInteger = (double) goodDouble;
Console.WriteLine(doubleFromBigInteger);

// Convert an out-of-bounds BigInteger value to a Double.
doubleFromBigInteger = (double) badDouble;
Console.WriteLine(doubleFromBigInteger);
// BigInteger to Double conversion.
let goodDouble = bigint 102.43e22
let badDouble = bigint Double.MaxValue * bigint 2

// successful conversion using cast operator.
let doubleFromBigInteger = double goodDouble
printfn $"{doubleFromBigInteger}"

// Convert an out-of-bounds BigInteger value to a Double.
let doubleFromBigInteger = double badDouble
printfn $"{doubleFromBigInteger}"
' BigInteger to Double conversion.
Dim goodDouble As BigInteger = 102.43e22
Dim badDouble As BigInteger = CType(Double.MaxValue, BigInteger)  
badDouble = badDouble * 2

Dim doubleFromBigInteger As Double

' Convert using CType function.
doubleFromBigInteger = CType(goodDouble, Double)
Console.WriteLine(doubleFromBigInteger)
' Convert using CDbl function.
doubleFromBigInteger = CDbl(goodDouble)
Console.WriteLine(doubleFromBigInteger)

' Convert an out-of-bounds BigInteger value to a Double.
doubleFromBigInteger = CType(badDouble, Double)
Console.WriteLine(doubleFromBigInteger)

Комментарии

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Компиляторы языка не выполняют это преобразование автоматически, так как это может привести к потере данных. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CTypeCDbl , в Visual Basic).

BigInteger Так как значение может находиться за пределами Double диапазона типа данных, эта операция является сужающим преобразованием. Если преобразование не выполнено, он не создает OverflowExceptionисключение. Вместо этого, если BigInteger значение меньше Double.MinValue, результирующее Double значение равно Double.NegativeInfinity. BigInteger Если значение большеDouble.MaxValue, результирующее Double значение равноDouble.PositiveInfinity.

Преобразование объекта в a BigIntegerDouble может привести к потере точности. В некоторых случаях потеря точности может привести к успешному выполнению операции приведения или преобразования, даже если BigInteger значение выходит за пределы диапазона Double типа данных. Это показывается в следующем примере. Он назначает максимальное значение Double двух BigInteger переменных, увеличивает одну BigInteger переменную на 9,999e291 и проверяет две переменные для равенства. Как ожидалось, вызов BigInteger.Equals(BigInteger) метода показывает, что они не равны. Однако преобразование большего BigInteger значения обратно Double в успешное, хотя BigInteger значение в настоящее время превышается Double.MaxValue.

// Increase a BigInteger so it exceeds Double.MaxValue.
BigInteger number1 = (BigInteger) Double.MaxValue;
BigInteger number2 = number1;
number2 = number2 + (BigInteger) 9.999e291;
// Compare the BigInteger values for equality.
Console.WriteLine("BigIntegers equal: {0}", number2.Equals(number1));

// Convert the BigInteger to a Double.
double dbl = (double) number2;

// Display the two values.
Console.WriteLine("BigInteger: {0}", number2);
Console.WriteLine("Double:     {0}", dbl);
// The example displays the following output:
//       BigIntegers equal: False
//       BigInteger: 1.7976931348623158081352742373E+308
//       Double:     1.79769313486232E+308
// Increase a BigInteger so it exceeds Double.MaxValue.
let number1 = bigint Double.MaxValue
let number2 = number1 + bigint 9.999e291
// Compare the BigInteger values for equality.
printfn $"BigIntegers equal: {number2.Equals number1}"

// Convert the BigInteger to a Double.
let dbl = float number2

// Display the two values.
printfn $"BigInteger: {number2}"
printfn $"Double:     {dbl}"
// The example displays the following output:
//       BigIntegers equal: False
//       BigInteger: 1.7976931348623158081352742373E+308
//       Double:     1.79769313486232E+308
' Increase a BigInteger so it exceeds Double.MaxValue.
Dim number1 As BigInteger = CType(Double.MaxValue, BigInteger)
Dim number2 As BigInteger = number1
number2 = number2 + 9.999e291
' Compare the BigInteger values for equality.
Console.WriteLine("BigIntegers equal: {0}", number2.Equals(number1))

' Convert the BigInteger to a Double.
Dim dbl As Double = CType(number2, Double)

' Display the two values.
Console.WriteLine("BigInteger: {0}", number2)
Console.WriteLine("Double:     {0}", dbl)      
' The example displays the following output:
'       BigIntegers equal: False
'       BigInteger: 1.7976931348623158081352742373E+308
'       Double:     1.79769313486232E+308

Применяется к

Explicit(BigInteger to Decimal)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Определяет явное преобразование BigInteger объекта в Decimal значение.

public:
 static explicit operator System::Decimal(System::Numerics::BigInteger value);
public static explicit operator decimal(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> decimal
Public Shared Narrowing Operator CType (value As BigInteger) As Decimal

Параметры

value
BigInteger

Значение, преобразуемое в .Decimal

Возвращаемое значение

Объект, содержащий значение value параметра.

Исключения

Примеры

В следующем примере показано преобразование значений BigIntegerDecimal . Он также обрабатывает OverflowException исключение, так как BigInteger значение выходит за пределы диапазона Decimal типа данных.

// BigInteger to Decimal conversion.
BigInteger goodDecimal = 761652543;
BigInteger badDecimal = (BigInteger) Decimal.MaxValue;
badDecimal += BigInteger.One;

Decimal decimalFromBigInteger;

// Successful conversion using cast operator.
decimalFromBigInteger = (decimal) goodDecimal;
Console.WriteLine(decimalFromBigInteger);

// Handle conversion that should result in overflow.
try
{
   decimalFromBigInteger = (decimal) badDecimal;
   Console.WriteLine(decimalFromBigInteger);
}
catch (OverflowException e)
{
   Console.WriteLine("Unable to convert {0}:\n   {1}",
                     badDecimal, e.Message);
}
Console.WriteLine();
// BigInteger to Decimal conversion.
let goodDecimal = 761652543
let badDecimal = bigint Decimal.MaxValue + BigInteger.One

// Successful conversion using cast operator.
let decimalFromBigInteger = decimal goodDecimal
printfn $"{decimalFromBigInteger}"

// Handle conversion that should result in overflow.
try
    let decimalFromBigInteger = decimal badDecimal
    printfn $"{decimalFromBigInteger}"
with :? OverflowException as e ->
    printfn $"Unable to convert {badDecimal}:\n   {e.Message}"
' BigInteger to Decimal conversion.
Dim goodDecimal As BigInteger = 761652543
Dim badDecimal As BigInteger = CType(Decimal.MaxValue, BigInteger) 
badDecimal += BigInteger.One

Dim decimalFromBigInteger As Decimal

' Convert using CType function.
decimalFromBigInteger = CType(goodDecimal, Decimal)
Console.WriteLine(decimalFromBigInteger)
' Convert using CDec function.
decimalFromBigInteger = CDec(goodDecimal)
Console.WriteLine(decimalFromBigInteger)

' Handle conversion that should result in overflow.
Try
   decimalFromBigInteger = CType(badDecimal, Decimal)
   Console.WriteLine(decimalFromBigInteger)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0}:{1}   {2}", _
                     badDecimal, vbCrLf, e.Message)
End Try
Console.WriteLine()

Комментарии

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Компиляторы языка не выполняют это преобразование автоматически, так как это может привести к потере данных. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CTypeCDec , в Visual Basic).

Так как эта операция определяет сужающее преобразование, оно может вызвать OverflowException вызов во время выполнения, если BigInteger значение выходит за пределы диапазона Decimal типа данных.

Применяется к

Explicit(BigInteger to Char)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Явно преобразует большое целое число в Char значение.

public:
 static explicit operator char(System::Numerics::BigInteger value);
public static explicit operator char(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> char
Public Shared Narrowing Operator CType (value As BigInteger) As Char

Параметры

value
BigInteger

Преобразуемое значение .

Возвращаемое значение

value преобразуется в Char значение.

Применяется к

Explicit(BigInteger to Byte)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Определяет явное преобразование BigInteger объекта в значение без знака байтов.

public:
 static explicit operator System::Byte(System::Numerics::BigInteger value);
public static explicit operator byte(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> byte
Public Shared Narrowing Operator CType (value As BigInteger) As Byte

Параметры

value
BigInteger

Значение, преобразуемое в .Byte

Возвращаемое значение

Объект, содержащий значение value параметра.

Исключения

value значение меньше Байт.MinValue или больше Байт.MaxValue.

Примеры

В следующем примере показано преобразование значений BigIntegerByte . Он также обрабатывает OverflowException исключение, так как BigInteger значение выходит за пределы диапазона Byte типа данных.

// BigInteger to Byte conversion.
BigInteger goodByte = BigInteger.One;
BigInteger badByte = 256;

byte byteFromBigInteger;

// Successful conversion using cast operator.
byteFromBigInteger = (byte) goodByte;
Console.WriteLine(byteFromBigInteger);

// Handle conversion that should result in overflow.
try
{
   byteFromBigInteger = (byte) badByte;
   Console.WriteLine(byteFromBigInteger);
}
catch (OverflowException e)
{
   Console.WriteLine("Unable to convert {0}:\n   {1}",
                     badByte, e.Message);
}
Console.WriteLine();
// BigInteger to Byte conversion.
let goodByte = BigInteger.One
let badByte = bigint 256

// Successful conversion using cast operator.
let byteFromBigInteger = byte goodByte
printfn $"{byteFromBigInteger}"

// Handle conversion that should result in overflow.
try
    let byteFromBigInteger = byte badByte
    printfn $"{byteFromBigInteger}"
with :? OverflowException as e ->
    printfn $"Unable to convert {badByte}:\n   {e.Message}"
' BigInteger to Byte conversion.
Dim goodByte As BigInteger = BigInteger.One
Dim badByte As BigInteger = 256

Dim byteFromBigInteger As Byte   

' Convert using CType function.
byteFromBigInteger = CType(goodByte, Byte)
Console.WriteLine(byteFromBigInteger)
' Convert using CByte function.
byteFromBigInteger = CByte(goodByte)
Console.WriteLine(byteFromBigInteger)

' Handle conversion that should result in overflow.
Try
   byteFromBigInteger = CType(badByte, Byte)
   Console.WriteLine(byteFromBigInteger)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0}:{1}   {2}", _
                     badByte, vbCrLf, e.Message)
End Try
Console.WriteLine()

Комментарии

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Компиляторы языка не выполняют это преобразование автоматически, так как это может привести к потере данных. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CTypeCByte , в Visual Basic). В противном случае они отображают ошибку компилятора.

Так как эта операция определяет сужающее преобразование, оно может вызвать OverflowException вызов во время выполнения, если BigInteger значение выходит за пределы диапазона Byte типа данных. В результирующем Byte значении нет потери точности, если преобразование выполнено успешно.

Применяется к

Explicit(BFloat16 to BigInteger)

public:
 static explicit operator System::Numerics::BigInteger(System::Numerics::BFloat16 value);
public static explicit operator System.Numerics.BigInteger(System.Numerics.BFloat16 value);
static member op_Explicit : System.Numerics.BFloat16 -> System.Numerics.BigInteger
Public Shared Narrowing Operator CType (value As BFloat16) As BigInteger

Параметры

value
BFloat16

Возвращаемое значение

Применяется к

Explicit(Half to BigInteger)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Явно преобразует Half значение в большое целое число.

public:
 static explicit operator System::Numerics::BigInteger(Half value);
public static explicit operator System.Numerics.BigInteger(Half value);
static member op_Explicit : Half -> System.Numerics.BigInteger
Public Shared Narrowing Operator CType (value As Half) As BigInteger

Параметры

value
Half

Преобразуемое значение .

Возвращаемое значение

value преобразуется в большое целое число.

Применяется к

Explicit(Double to BigInteger)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Определяет явное преобразование Double значения в BigInteger значение.

public:
 static explicit operator System::Numerics::BigInteger(double value);
public static explicit operator System.Numerics.BigInteger(double value);
static member op_Explicit : double -> System.Numerics.BigInteger
Public Shared Narrowing Operator CType (value As Double) As BigInteger

Параметры

value
Double

Значение, преобразуемое в .BigInteger

Возвращаемое значение

Объект, содержащий значение value параметра.

Исключения

Примеры

В следующем примере отдельные элементы в массиве значений DoubleBigInteger преобразуются в объекты, а затем отображаются результаты каждого преобразования. Обратите внимание, что любая дробная часть Double значения усечена во время преобразования.

double[] doubles = { Double.MinValue, -1.430955172e03, 2.410970032e05,
                     Double.MaxValue, Double.PositiveInfinity,
                     Double.NegativeInfinity, Double.NaN };
BigInteger number;

Console.WriteLine("{0,37} {1,37}\n", "Double", "BigInteger");

foreach (double value in doubles)
{
   try {
      number = (BigInteger) value;
      Console.WriteLine("{0,37} {1,37}", value, number);
   }
   catch (OverflowException) {
      Console.WriteLine("{0,37} {1,37}", value, "OverflowException");
   }
}
// The example displays the following output:
//                                Double                            BigInteger
//
//                -1.79769313486232E+308  -1.7976931348623157081452742373E+308
//                          -1430.955172                                 -1430
//                           241097.0032                                241097
//                 1.79769313486232E+308   1.7976931348623157081452742373E+308
//                              Infinity                     OverflowException
//                             -Infinity                     OverflowException
//                                   NaN                     OverflowException
let doubles =
    [| Double.MinValue
       -1.430955172e03
       2.410970032e05
       Double.MaxValue
       Double.PositiveInfinity
       Double.NegativeInfinity
       Double.NaN |]

printfn "%37s %37s\n" "Double" "BigInteger"

for value in doubles do
    try
        let number = BigInteger(value)
        printfn "%37O %37O" value number
    with :? OverflowException ->
        printfn "%37O %37s" value "OverflowException"
// The example displays the following output:
//                                Double                            BigInteger
//
//                -1.79769313486232E+308  -1.7976931348623157081452742373E+308
//                          -1430.955172                                 -1430
//                           241097.0032                                241097
//                 1.79769313486232E+308   1.7976931348623157081452742373E+308
//                              Infinity                     OverflowException
//                             -Infinity                     OverflowException
//                                   NaN                     OverflowException
Dim doubles() As Double = { Double.MinValue, -1.430955172e03, 2.410970032e05, 
                            Double.MaxValue, Double.PositiveInfinity, 
                            Double.NegativeInfinity, Double.NaN }
Dim number As BigInteger

Console.WriteLine("{0,37} {1,37}", "Double", "BigInteger")
Console.WriteLine()
For Each value As Double In doubles
   Try
      number = CType(value, BigInteger)
      Console.WriteLine("{0,37} {1,37}", value, number)
   Catch e As OverflowException
      Console.WriteLine("{0,37} {1,37}", value, "OverflowException")
   End Try      
Next
' The example displays the following output:
'                                Double                            BigInteger
' 
'                -1.79769313486232E+308  -1.7976931348623157081452742373E+308
'                          -1430.955172                                 -1430
'                           241097.0032                                241097
'                 1.79769313486232E+308   1.7976931348623157081452742373E+308
'                              Infinity                     OverflowException
'                             -Infinity                     OverflowException
'                                   NaN                     OverflowException

Комментарии

Перед преобразованием любая дробная часть value параметра усечена.

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Так как преобразование из DoubleBigInteger этого может включать усечение любой valueдробной части, компиляторы языка не выполняют это преобразование автоматически. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CType , в Visual Basic). В противном случае они отображают ошибку компилятора.

Для языков, которые не поддерживают пользовательские операторы, альтернативный метод — BigInteger.BigInteger(Double).

Применяется к

Explicit(Decimal to BigInteger)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Определяет явное преобразование Decimal объекта в BigInteger значение.

public:
 static explicit operator System::Numerics::BigInteger(System::Decimal value);
public static explicit operator System.Numerics.BigInteger(decimal value);
static member op_Explicit : decimal -> System.Numerics.BigInteger
Public Shared Narrowing Operator CType (value As Decimal) As BigInteger

Параметры

value
Decimal

Значение, преобразуемое в .BigInteger

Возвращаемое значение

Объект, содержащий значение value параметра.

Примеры

В следующем примере отдельные элементы в массиве значений DecimalBigInteger преобразуются в объекты, а затем отображаются результаты каждого преобразования. Обратите внимание, что любая дробная часть Decimal значения усечена во время преобразования.

decimal[] decimals = { Decimal.MinValue, -15632.991m, 9029321.12m,
                       Decimal.MaxValue };
BigInteger number;

Console.WriteLine("{0,35} {1,35}\n", "Decimal", "BigInteger");

foreach (decimal value in decimals)
{
   number = (BigInteger) value;
   Console.WriteLine("{0,35} {1,35}", value, number);
}
// The example displays the following output:
//
//                          Decimal                          BigInteger
//
//    -79228162514264337593543950335      -79228162514264337593543950335
//                       -15632.991                              -15632
//                       9029321.12                             9029321
//    79228162514264337593543950335       79228162514264337593543950335
let decimals = [| Decimal.MinValue; -15632.991m; 9029321.12m; Decimal.MaxValue |]

printfn "%35s %35s\n" "Decimal" "BigInteger"

for value in decimals do
    let number = BigInteger(value)
    printfn "%35O %35O" value number
// The example displays the following output:
//
//                          Decimal                          BigInteger
//
//    -79228162514264337593543950335      -79228162514264337593543950335
//                       -15632.991                              -15632
//                       9029321.12                             9029321
//    79228162514264337593543950335       79228162514264337593543950335
' Explicit Decimal to BigInteger conversion
Dim decimals() As Decimal = { Decimal.MinValue, -15632.991d, 9029321.12d, 
                              Decimal.MaxValue }
Dim number As BigInteger 

Console.WriteLine("{0,35} {1,35}", "Decimal", "BigInteger")
Console.WriteLine()
For Each value As Decimal In decimals
   number = CType(value, BigInteger)
   Console.WriteLine("{0,35} {1,35}",
                     value, number)
Next
' The example displays the following output:
'
'                          Decimal                          BigInteger
'    
'    -79228162514264337593543950335      -79228162514264337593543950335
'                       -15632.991                              -15632
'                       9029321.12                             9029321
'    79228162514264337593543950335       79228162514264337593543950335

Комментарии

Перед преобразованием любая дробная часть value параметра усечена.

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Так как преобразование из DecimalBigInteger этого может включать усечение любой valueдробной части, компиляторы языка не выполняют это преобразование автоматически. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CType , в Visual Basic). В противном случае они отображают ошибку компилятора.

Для языков, которые не поддерживают пользовательские операторы, альтернативный метод — BigInteger.BigInteger(Decimal).

Применяется к

Explicit(BigInteger to Int32)

Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs
Исходный код:
BigInteger.cs

Определяет явное преобразование BigInteger объекта в 32-разрядное целое число со знаком.

public:
 static explicit operator int(System::Numerics::BigInteger value);
public static explicit operator int(System.Numerics.BigInteger value);
static member op_Explicit : System.Numerics.BigInteger -> int
Public Shared Narrowing Operator CType (value As BigInteger) As Integer

Параметры

value
BigInteger

Значение для преобразования в 32-разрядное целое число со знаком.

Возвращаемое значение

Объект, содержащий значение value параметра.

Исключения

value меньше Int32.MinValue или больше Int32.MaxValue.

Примеры

В следующем примере показано преобразование значений BigIntegerInt32 . Он также обрабатывает OverflowException исключение, так как BigInteger значение выходит за пределы диапазона Int32 типа данных.

// BigInteger to Int32 conversion.
BigInteger goodInteger = 200000;
BigInteger badInteger = 65000000000;

int integerFromBigInteger;

// Successful conversion using cast operator.
integerFromBigInteger = (int) goodInteger;
Console.WriteLine(integerFromBigInteger);

// Handle conversion that should result in overflow.
try
{
   integerFromBigInteger = (int) badInteger;
   Console.WriteLine(integerFromBigInteger);
}
catch (OverflowException e)
{
   Console.WriteLine("Unable to convert {0}:\n   {1}",
                     badInteger, e.Message);
}
Console.WriteLine();
// BigInteger to Int32 conversion.
let goodInteger = bigint 200000
let badInteger = bigint 65000000000L

// Successful conversion using cast operator.
let integerFromBigInteger = int goodInteger
printfn $"{integerFromBigInteger}"

// Handle conversion that should result in overflow.
try
    let integerFromBigInteger = int badInteger
    printfn $"{integerFromBigInteger}"
with :? OverflowException as e ->
    printfn $"Unable to convert {badInteger}:\n   {e.Message}"
' BigInteger to Int32 conversion.
Dim goodInteger As BigInteger = 200000
Dim badInteger As BigInteger = 65000000000

Dim integerFromBigInteger As Integer

' Convert using CType function.
integerFromBigInteger = CType(goodInteger, Integer)
Console.WriteLine(integerFromBigInteger)
' Convert using CInt function.
integerFromBigInteger = CInt(goodInteger)
Console.WriteLIne(integerFromBigInteger)

' Handle conversion that should result in overflow.
Try
   integerFromBigInteger = CType(badInteger, Integer)
   Console.WriteLine(integerFromBigInteger)
Catch e As OverflowException
   Console.WriteLine("Unable to convert {0}:{1}   {2}", _
                     badInteger, vbCrLf, e.Message)
End Try
Console.WriteLine()

Комментарии

Перегрузки Explicit(Decimal to BigInteger) метода определяют типы, в которые или из которого BigInteger можно преобразовать объект. Компиляторы языка не выполняют это преобразование автоматически, так как это может привести к потере данных. Вместо этого они выполняют преобразование только в том случае, если используется оператор приведения (в C#) или функция преобразования (например CTypeCInt , в Visual Basic). В противном случае они отображают ошибку компилятора.

Так как эта операция определяет сужающее преобразование, оно может вызвать OverflowException вызов во время выполнения, если BigInteger значение выходит за пределы диапазона Int32 типа данных. В результирующем Int32 значении нет потери точности, если преобразование выполнено успешно.

Применяется к