Megosztás a következőn keresztül:


BigInteger maximális hossza

A .NET 9 maximális hosszát kényszeríti BigIntegerki, vagyis legfeljebb (2^31) - 1 (körülbelül 2,14 milliárd) bitet tartalmazhat. Ez a szám közel 256 MB-os foglalást jelent, és körülbelül 646,5 millió számjegyet tartalmaz. Ez az új korlát biztosítja, hogy a közzétett API-k megfelelően viselkednek és konzisztensek legyenek, miközben továbbra is lehetővé teszik a legtöbb használati forgatókönyvön túlmutató számokat.

Előző viselkedés

Korábban egy változóhoz legfeljebb bithosszúságú Array.MaxLength * 32BigInteger értéket rendelhet.

Feljegyzés

A tipikus gépek jóval azelőtt érnék el OutOfMemoryException ezt a korlátot, hogy valaha is elérnék ezt a korlátot.

Új viselkedés

A .NET 9-től BigInteger kezdődően a maximális hossza (2^31) - 1 (körülbelül 2,14 milliárd) bit. Ha nagyobb értéket próbál hozzárendelni, OverflowException a rendszer futásidőben dob egy értéket. A következő kód például kivételt jelez:

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

Bevezetett verzió

.NET 9 előzetes verzió 6

A kompatibilitástörő változás típusa

Ez a változás viselkedésbeli változás.

A változás oka

BigInteger támogatja a lényegében tetszőleges hosszúságú egész számértékek ábrázolását. A gyakorlatban azonban a hosszt a mögöttes számítógép korlátai korlátozzák, például a rendelkezésre álló memória vagy egy adott kifejezés kiszámításának időtartama. Emellett léteznek olyan API-k is, amelyek nem adnak meg olyan bemeneteket, amelyek túl nagy értéket eredményeznek. Ezen okok miatt a maximális hossz most érvényes lesz.

Ha a kód érintett, csökkentse a hozzárendelt BigInteger érték hosszát, vagy adjon hozzá egy hosszellenőrzést.

Érintett API-k