Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
.NET 9 применяет максимальную длину BigInteger, которая заключается в том, что она может содержать не более (2^31) - 1 (примерно 2,14 миллиарда) битов. Такое число представляет почти 256 МБ выделения и содержит примерно 646,5 миллиона цифр. Это новое ограничение гарантирует, что все предоставляемые API хорошо работают и согласованы, позволяя числам, которые находятся далеко за пределами большинства сценариев использования.
Прежнее поведение
Ранее можно назначить значение длиной до Array.MaxLength * 32 битов переменной BigInteger .
Примечание.
Типичные компьютеры достигнут OutOfMemoryException далеко до достижения этого ограничения.
Новое поведение
Начиная с .NET 9, BigInteger имеет максимальную длину (2^31) - 1 (примерно 2,14 миллиарда) битов. При попытке назначить большее значение во время выполнения выдается исключение OverflowException. Например, следующий код вызывает исключение:
BigInteger bigInt = new BigInteger(-1) << int.MaxValue;
Представленные версии
.NET 9( предварительная версия 6)
Тип критического изменения
Причина изменения
BigInteger поддерживает представление целых значений по существу произвольной длины. Однако на практике длина ограничена ограничениями базового компьютера, например доступной памяти или времени, необходимого для вычисления заданного выражения. Кроме того, существуют некоторые API, которые завершаются сбоем при вводе, что приводит к слишком большому значению. По этим причинам применяется максимальная длина.
Рекомендуемое действие
Если ваш код затронут, уменьшите длину значения, которое BigInteger вы назначите или добавите проверку длины.