Delen via


Maximale lengte bigInteger

.NET 9 dwingt een maximale lengte van BigIntegeraf, wat inhoudt dat het niet meer dan (2^31) - 1 (ongeveer 2,14 miljard) bits mag bevatten. Een dergelijk getal vertegenwoordigt een toewijzing van bijna 256 MB en bevat ongeveer 646,5 miljoen cijfers. Deze nieuwe limiet zorgt ervoor dat alle BESCHIKBARE API's goed en consistent zijn, terwijl er nog steeds getallen zijn die veel verder gaan dan de meeste gebruiksscenario's.

Vorig gedrag

Eerder kunt u een waarde met een lengte tot Array.MaxLength * 32 bits toewijzen aan een BigInteger variabele.

Notitie

Typische machines zouden OutOfMemoryException ver voordat deze limiet ooit kan worden bereikt.

Nieuw gedrag

Vanaf .NET 9 BigInteger heeft een maximale lengte van (2^31) - 1 (ongeveer 2,14 miljard) bits. Als u een grotere waarde probeert toe te wijzen, wordt er een OverflowException gegenereerd tijdens runtime. Met de volgende code wordt bijvoorbeeld een uitzondering gegenereerd:

BigInteger bigInt = new BigInteger(-1) << int.MaxValue;

Versie geïntroduceerd

.NET 9 Preview 6

Type wijziging die fouten veroorzaken

Deze wijziging is een gedragswijziging.

Reden voor wijziging

BigInteger ondersteunt het vertegenwoordigen van gehele getallen van in wezen willekeurige lengte. In de praktijk wordt de lengte echter beperkt door de limieten van de onderliggende computer, zoals het beschikbare geheugen of hoe lang het duurt om een bepaalde expressie te berekenen. Daarnaast bestaan er enkele API's die mislukken bij invoer die resulteren in een waarde die te groot is. Om deze redenen wordt nu een maximale lengte afgedwongen.

Als uw code wordt beïnvloed, verlaagt u de lengte van de waarde die u toewijst of BigInteger voegt u een lengtecontrole toe.

Betrokken API's