CodeBlanks Logo Icon CodeBlanks

List<T> derinlemesine

C# kursu · Orta seviye · Ders 76/116

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

  1. 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.

  2. AddRange çağrısını tamamla

    list.AddRange(new[] {____});
    Cevabı göster
    list.AddRange(new[] {4, 5, 6});
  3. Üyeyi açıklamaya eşle

    Count
    Eleman sayısı
    Capacity
    Ayrılan yer
    AddRange
    Çoklu ekleme
    TrimExcess
    Boş yeri bırak

Orta seviye bölümündeki tüm dersler