Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
.NET 9 memberlakukan panjang BigIntegermaksimum , yaitu dapat berisi tidak lebih dari (2^31) - 1 (sekitar 2,14 miliar) bit. Angka tersebut menunjukkan alokasi hampir 256 MB dan berisi sekitar 646,5 juta digit. Batas baru ini memastikan bahwa semua API yang terekspos berperilaku baik dan konsisten dengan tetap memungkinkan angka yang jauh melampaui sebagian besar skenario penggunaan.
Perilaku sebelumnya
Sebelumnya, Anda dapat menetapkan nilai dengan panjang hingga Array.MaxLength * 32 bit ke BigInteger variabel.
Catatan
Mesin umum akan mencapai jauh OutOfMemoryException sebelum batas ini dapat dicapai.
Perilaku yang baru
Mulai dari .NET 9, BigInteger memiliki panjang (2^31) - 1 maksimum (sekitar 2,14 miliar) bit. Jika Anda mencoba menetapkan nilai yang lebih besar, nilai OverflowException akan dilemparkan saat runtime. Misalnya, kode berikut melemparkan pengecualian:
BigInteger bigInt = new BigInteger(-1) << int.MaxValue;
Versi yang diperkenalkan
Pratinjau .NET 9 6
Jenis perubahan yang melanggar
Perubahan ini adalah perubahan perilaku.
Alasan untuk berubah
BigInteger mendukung mewakili nilai bilangan bulat dengan panjang arbitrer pada dasarnya. Namun, dalam praktiknya, panjangnya dibatasi oleh batas komputer yang mendasar, seperti memori yang tersedia atau berapa lama waktu yang diperlukan untuk menghitung ekspresi tertentu. Selain itu, ada beberapa API yang gagal memberikan input yang menghasilkan nilai yang terlalu besar. Untuk alasan ini, panjang maksimum sekarang diberlakukan.
Tindakan yang direkomendasikan
Jika kode Anda terpengaruh, kurangi panjang nilai yang Anda tetapkan BigInteger atau tambahkan pemeriksaan panjang.