Junior — Middle
Можете ли да обясните вътрешната структура на списъка и как е реализирана в паметта?
sobes.tech AI
Отговор от AI
В C# структурата данни List<T> е реализирана като динамичен масив. Вътре тя съдържа:
- Масив с фиксиран размер, който съхранява елементите.
- Поле, което указва текущия размер (броя на елементите).
Когато се добави нов елемент и масивът е пълен, се създава нов масив с по-голям размер (обикновено два пъти по-голям), и всички елементи се копират в него. Това позволява ефективно добавяне на елементи, като достъпът по индекс остава O(1).
Пример:
List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);
// Вътре в List, масивът се разширява при необходимост
int first = numbers[0]; // достъп по индекс
Така, List<T> съчетава предимствата на масива (бърз достъп) и на динамичния размер.