Listede depolanabilecek bir öğe sınırı var mı? ya da hafızanız bitene kadar eleman eklemeye devam edebilirsiniz? ve tüm iç operasyonlar için gösterilen indekse olarak, onun Count
özelliği için onun destek dizisi, inşa etmek - -Listede saklanabilecek bir öğe sınırı var mı?
7
A
cevap
20
List<T>
geçerli uygulaması Int32
her yerde kullanır böylece Int32.MaxValue
öğelerin bir akım teorik maksimum (2^31-1
var ya 2147483647
).
Ancak, .NET çerçevesinin 2GB'lık bir maksimum nesne boyutu sınırı vardır, bu nedenle List<byte>
veya List<bool>
gibi tek baytlık öğeler listelerine yalnızca öğe sınırının yakınında bir yere ulaşırsınız.
Pratikte, bu sınırlardan birine basmadan önce muhtemelen bitişik belleğin bitmesine neden olacaksınız.
* Teorik olarak *, sadece Int32.MaxValue'ye kadar olan öğelere rastgele erişebildiğiniz anlamına gelir, kaç tane eleman olabilir, elbette * teorik olarak *. –
@Martinho: Şu anki uygulama 'Int32' * her yerde kullanılıyor *, bu yüzden sadece 2^31 öğeyle sınırlı olmayan rastgele erişim değil. (Elbette, Int32'nin dahili olarak kullanımı sadece bir uygulama detayıdır, ancak indeksleyici ve "Count" gibi özellikler kamu sözleşmesinin bir parçasıdır.) – LukeH