Прочитать на английском

Поделиться через


BigInteger.Explicit Оператор

Определение

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

Перегрузки

Explicit(BigInteger to SByte)

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

Этот интерфейс API CLS-несовместим. Совместимая альтернатива — Int16.

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 IntPtr)

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

Explicit(BigInteger to Int64)

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

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(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 SByte)

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

Важно!

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

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

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

Этот интерфейс API CLS-несовместим. Совместимая альтернатива — Int16.

C#
[System.CLSCompliant(false)]
public static explicit operator sbyte(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

Атрибуты

Исключения

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

Примеры

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

C#
// 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();

Комментарии

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(Single to BigInteger)

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

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

C#
public static explicit operator System.Numerics.BigInteger(float value);

Параметры

value
Single

Значение, которое необходимо преобразовать в тип BigInteger.

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

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

Исключения

value имеет значение NaN, PositiveInfinity или NegativeInfinity.

Примеры

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

C#
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

Комментарии

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(Complex to BigInteger)

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

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

C#
public static explicit operator System.Numerics.BigInteger(System.Numerics.Complex value);

Параметры

value
Complex

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10

Explicit(BigInteger to UIntPtr)

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

Важно!

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

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

C#
[System.CLSCompliant(false)]
public static explicit operator UIntPtr(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

UIntPtr

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

Атрибуты

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10

Explicit(BigInteger to UInt64)

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

Важно!

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

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

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

Этот интерфейс API CLS-несовместим. Совместимая альтернатива — Double.

C#
[System.CLSCompliant(false)]
public static explicit operator ulong(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

Атрибуты

Исключения

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

Примеры

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

C#
// 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();

Комментарии

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(BigInteger to UInt32)

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

Важно!

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

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

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

Этот интерфейс API CLS-несовместим. Совместимая альтернатива — Int64.

C#
[System.CLSCompliant(false)]
public static explicit operator uint(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

Атрибуты

Исключения

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

Примеры

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

C#
// 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();

Комментарии

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(BigInteger to UInt16)

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

Важно!

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

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

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

Этот интерфейс API CLS-несовместим. Совместимая альтернатива — Int32.

C#
[System.CLSCompliant(false)]
public static explicit operator ushort(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

Атрибуты

Исключения

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

Примеры

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

C#
// 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();

Комментарии

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(BigInteger to UInt128)

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

Важно!

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

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

C#
[System.CLSCompliant(false)]
public static explicit operator UInt128(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

Атрибуты

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10

Explicit(BigInteger to Single)

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

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

C#
public static explicit operator float(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

Примеры

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

C#
// 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);

Комментарии

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

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

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

C#
// 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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(BigInteger to IntPtr)

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

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

C#
public static explicit operator IntPtr(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

IntPtr

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

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10

Explicit(BigInteger to Int64)

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

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

C#
public static explicit operator long(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

Исключения

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

Примеры

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

C#
// 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();

Комментарии

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(BigInteger to Int16)

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

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

C#
public static explicit operator short(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

Исключения

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

Примеры

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

C#
// 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();

Комментарии

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(BigInteger to Int128)

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

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

C#
public static explicit operator Int128(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10

Explicit(BigInteger to Half)

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

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

C#
public static explicit operator Half(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10

Explicit(BigInteger to Double)

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

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

C#
public static explicit operator double(System.Numerics.BigInteger value);

Параметры

value
BigInteger

Значение, которое необходимо преобразовать в тип Double.

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

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

Примеры

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

C#
// 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);

Комментарии

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

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

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

C#
// 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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(BigInteger to Decimal)

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

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

C#
public static explicit operator decimal(System.Numerics.BigInteger value);

Параметры

value
BigInteger

Значение, которое необходимо преобразовать в тип Decimal.

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

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

Исключения

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

Примеры

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

C#
// 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();

Комментарии

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(BigInteger to Char)

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

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

C#
public static explicit operator char(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10

Explicit(BigInteger to Byte)

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

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

C#
public static explicit operator byte(System.Numerics.BigInteger value);

Параметры

value
BigInteger

Значение, которое необходимо преобразовать в тип Byte.

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

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

Исключения

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

Примеры

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

C#
// 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();

Комментарии

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(Half to BigInteger)

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

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

C#
public static explicit operator System.Numerics.BigInteger(Half value);

Параметры

value
Half

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET 7, 8, 9, 10

Explicit(Double to BigInteger)

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

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

C#
public static explicit operator System.Numerics.BigInteger(double value);

Параметры

value
Double

Значение, которое необходимо преобразовать в тип BigInteger.

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

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

Исключения

value имеет значение NaN, PositiveInfinity или NegativeInfinity.

Примеры

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

C#
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

Комментарии

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(Decimal to BigInteger)

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

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

C#
public static explicit operator System.Numerics.BigInteger(decimal value);

Параметры

value
Decimal

Значение, которое необходимо преобразовать в тип BigInteger.

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

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

Примеры

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

C#
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

Комментарии

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

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Explicit(BigInteger to Int32)

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

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

C#
public static explicit operator int(System.Numerics.BigInteger value);

Параметры

value
BigInteger

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

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

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

Исключения

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

Примеры

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

C#
// 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();

Комментарии

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

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

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

.NET 10 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0