Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 * 32
BigInteger é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.
Javasolt művelet
Ha a kód érintett, csökkentse a hozzárendelt BigInteger érték hosszát, vagy adjon hozzá egy hosszellenőrzést.