List<T> derinlemesine
List<T>'nin_capacity ve AddRange davranışını öğrenirsin.
List<T> derinlemesine
Bir List<T> iki boyut tutar: Count içindeki eleman sayısıdır, Capacity ise arka plandaki dizinin boyutudur. Eleman ekledikçe Count artar; dizi dolunca Capacity iki katına çıkar ve yeni bir dizi ayrılır.
AddRange ile bir koleksiyonun tamamını tek seferde eklersin: list.AddRange(new[] { 4, 5, 6 });. Bu, döngüyle tek tek eklemekten daha hızlıdır. TrimExcess ise boş kalan kapasiteyi bırakır. Bu üç üye, listeyi bilinçli yönetmenin anahtarıdır.
AddRange ve TrimExcess
AddRange bir IEnumerable<T> alır ve tüm elemanları tek geçişte ekler. list.AddRange(otherList) yazınca iç dizi bir kez büyür; her eleman için ayrı büyüme yapılmaz.
Büyük bir listeyi küçülttüysen TrimExcess() ile boş kapasiteyi bırakabilirsin. Ancak liste neredeyse doluysa bu çağrı etkisizdir. Performans için kapasiteyi baştan vermek en iyisidir: new List<int>(100).
Uygulama AddRange ile eleman ekle
Aşağıdaki list üç elemanlıdır. AddRange ile 4, 5, 6 elemanlarını ekle. Sonra Count ve Capacity değerlerini ayrı satırlarda yazdır.
Örnek çözümü göster
AddRange ile üç elemanı ekle, sonra Count ve Capacity'yi ayrı ayrı yazdır.
Örnek çözüm:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var list = new List<int>(10);
list.Add(1);
list.Add(2);
list.Add(3);
list.AddRange(new[] { 4, 5, 6 });
Console.WriteLine(list.Count);
Console.WriteLine(list.Capacity);
}
}
Kendini test et
-
Capacity neyi verir?
- Ayrılan toplam yer
- Eleman sayısı
- İlk elemanı
- Son elemanı
Cevabı göster
Ayrılan toplam yer — Doğru. Capacity, arka plandaki dizinin boyutunu verir; Count ise eleman sayısıdır.
-
AddRange çağrısını tamamla
list.AddRange(new[] {____});Cevabı göster
list.AddRange(new[] {4, 5, 6}); -
Üyeyi açıklamaya eşle
- Count
- Eleman sayısı
- Capacity
- Ayrılan yer
- AddRange
- Çoklu ekleme
- TrimExcess
- Boş yeri bırak