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:
-
Saxlanılan məlumatların növü üzrə:
- Növlərsiz (Untyped):
objecttipində 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.
- Növlərsiz (Untyped):
-
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)
- Siyahılar (Lists): Ardıcıllıqla kolleksiyalar, elementlərə indekslə giriş.
-
İş 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>
- İş parçaları ilə təhlükəsiz olmayanlar: Əksər standart kolleksiyalar (
-
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.