Sobes.tech
Junior

C# dilində hansı kolleksiyalar mövcuddur?

sobes.tech Süni İntellekt

AI-dan cavab

C# müxtəlif ad alanlarında yerləşən (əsasən System.Collections, System.Collections.Generic, System.Collections.Concurrent, System.Collections.Immutable) məlumatların saxlanması və idarə olunması üçün çox sayda kolleksiya növü təklif edir. Onlar əsasən aşağıdakı əsas xüsusiyyətlərə görə təsnif edilə bilər:

  1. Saxlanılan məlumatların növü üzrə:

    • Növlərsiz (Untyped): object tipində obyektləri saxlayır (System.Collections). Növlərin çevrilməsini tələb edir və daha az performanslı ola bilər.
    • Növə əsaslanan (Generic): Müəyyən bir tipdə obyektləri saxlayır (System.Collections.Generic). Tip təhlükəsizliyi və daha yaxşı performans təmin edir.
  2. Məlumat strukturu üzrə:

    • Siyahılar (Lists): Ardıcıllıqla kolleksiyalar, elementlərə indekslə giriş.
      • ArrayList (növlərsiz)
      • List<T> (növə əsaslanan)
      • LinkedList<T> (növə əsaslanan iki bağlı siyahı)
    • Massivlər (Arrays): Müəyyən ölçülü, indekslə giriş.
      • Array (əsas sinif)
      • T[] (massivlər üçün sintaktik şəkər)
    • Sözlüklər (Dictionaries): Açar-dəyər cütlükləri kolleksiyası, açar ilə giriş.
      • Hashtable (növlərsiz)
      • Dictionary<TKey, TValue> (növə əsaslanan)
      • SortedList (növlərsiz, açara görə sıralanmış)
      • SortedList<TKey, TValue> (növə əsaslanan, açara görə sıralanmış)
      • SortedDictionary<TKey, TValue> (növə əsaslanan, açara görə sıralanmış, qırmızı-qaranlıq ağac istifadə edir)
    • Kümələr (Sets): Unikal elementlər kolleksiyası.
      • HashSet<T> (növə əsaslanan, sıralanmayan)
      • SortedSet<T> (növə əsaslanan, sıralanmış)
    • Növbələr (Queues): "İlk daxil olan, ilk çıxar" prinsipi ilə işləyən kolleksiyalar (FIFO).
      • Queue (növlərsiz)
      • Queue<T> (növə əsaslanan)
    • Yığınlar (Stacks): "Son daxil olan, ilk çıxar" prinsipi ilə işləyən kolleksiyalar (LIFO).
      • Stack (növlərsiz)
      • Stack<T> (növə əsaslanan)
  3. İş parçaları təhlükəsizliyi üzrə:

    • İş parçaları ilə təhlükəsiz olmayanlar: Əksər standart kolleksiyalar (System.Collections, System.Collections.Generic). Çox iş parçalı mühitdə xarici sinxronizasiya tələb edir.
    • İş parçaları ilə təhlükəsiz (Concurrent): Çox iş parçalı mühitdə təhlükəsiz işləmək üçün hazırlanmışdır (System.Collections.Concurrent).
      • ConcurrentBag<T>
      • ConcurrentDictionary<TKey, TValue>
      • ConcurrentQueue<T>
      • ConcurrentStack<T>
  4. Dəyişkənlik üzrə:

    • Dəyişkən (Mutable): Əksər kolleksiyalar elementlərin əlavə olunması, silinməsi və dəyişdirilməsi imkanını verir.
    • Dəyişməz (Immutable): Yaradıldıqdan sonra dəyişməzdir (System.Collections.Immutable). Hər hansı dəyişiklik əməliyyatı yeni kolleksiya qaytarır.
      • ImmutableArray<T>
      • ImmutableList<T>
      • ImmutableDictionary<TKey, TValue>
      • ImmutableHashSet<T>
      • ImmutableSortedSet<T>
      • ImmutableQueue<T>
      • ImmutableStack<T>

Xüsusi kolleksiya növünün seçimi vəzifənin tələblərindən asılıdır: məlumat növü, indeks və ya açar ilə giriş ehtiyacı, unikal elementlərin tələbi, saxlanma qaydası, performans, iş parçaları təhlükəsizliyi və dəyişkənlik. Müasir C#-da ən çox istifadə olunanlar System.Collections.Generic ad alanındakı növəyə əsaslanan kolleksiyalardır.