Дар C# кадом намудҳои ҷамъоварӣ мавҷуданд?
sobes.tech AI
Ҷавоб аз AI
C# пешниҳод мекунад намудҳои зиёди коллексияҳо барои нигоҳдорӣ ва идоракунии маълумотҳо, ки дар фазоҳои номҳои гуногун ҷойгир шудаанд (асосан System.Collections, System.Collections.Generic, System.Collections.Concurrent, System.Collections.Immutable). Онҳоро метавон ба асосҳои зерин тақсим кард:
-
Барои навъи маълумоте, ки нигоҳ дошта мешавад:
- Бе навъ (Untyped): Объектҳоро бо навъи
objectнигоҳ медорад (System.Collections). Талаб мекунад, ки навъҳоро табдил диҳад ва метавонад камтар самаранок бошад. - Бо навъ (Generic): Объектҳоро бо навъи муайян нигоҳ медорад (
System.Collections.Generic). Бехатарии навъ ва иҷрои беҳтарро таъмин мекунад.
- Бе навъ (Untyped): Объектҳоро бо навъи
-
Барои сохтори маълумот:
- Листҳо (Lists): Коллексияҳои пайдарпай, дастрасӣ ба унсурҳо бо индекс.
ArrayList(бе навъ)List<T>(бо навъ)LinkedList<T>(бо навъ, рӯйхати дуҷониба)
- Масивҳо (Arrays): Андозаи муайян, дастрасӣ бо индекс.
Array(синфи асосӣ)T[](шакли синтаксис барои масивҳо)
- Луғатҳо (Dictionaries): Коллексияҳои ҷуфтҳои калид-арзиш, дастрасӣ бо калид.
Hashtable(бе навъ)Dictionary<TKey, TValue>(бо навъ)SortedList(бе навъ, ба калид мувофиқ карда шудааст)SortedList<TKey, TValue>(бо навъ, ба калид мувофиқ карда шудааст)SortedDictionary<TKey, TValue>(бо навъ, ба калид мувофиқ карда шудааст, истифодаи дарахти сурх-сурх)
- Ҳамҷояҳо (Sets): Коллексияҳои уникӣ.
HashSet<T>(бо навъ, бе тартиб)SortedSet<T>(бо навъ, бо тартиб)
- Навбатҳо (Queues): Коллексияҳо, ки дар асоси принсипи "аввал омад, аввал баромад" (FIFO).
Queue(бе навъ)Queue<T>(бо навъ)
- Тӯбҳо (Stacks): Коллексияҳо, ки дар асоси принсипи "охирин омад, аввал баромад" (LIFO).
Stack(бе навъ)Stack<T>(бо навъ)
- Листҳо (Lists): Коллексияҳои пайдарпай, дастрасӣ ба унсурҳо бо индекс.
-
Барои бехатарии раванди кор бо сӯзанҳо:
- Бе бехатарӣ (Non-thread-safe): Бисёре аз коллексияҳои стандартӣ (
System.Collections,System.Collections.Generic). Талаб мекунад, ки барои кор бо бисёр сӯзанҳо, ҳамоҳангсозии беруна анҷом дода шавад. - Бехатар бо сӯзанҳо (Concurrent): Барои кор дар муҳити бисёрсӯзанӣ бехатар тарҳрезӣ шудаанд (
System.Collections.Concurrent).ConcurrentBag<T>ConcurrentDictionary<TKey, TValue>ConcurrentQueue<T>ConcurrentStack<T>
- Бе бехатарӣ (Non-thread-safe): Бисёре аз коллексияҳои стандартӣ (
-
Барои тағйирёбандагӣ:
- Таъғирёбанда (Mutable): Бисёре аз коллексияҳо имкон медиҳанд, ки унсурҳоро илова, тоза ва тағйир додан.
- Бе тағйирёбанда (Immutable): Пас аз эҷод кардан, тағйирнопазир мебошанд (
System.Collections.Immutable). Ҳар як амали тағйирот, маҷмӯаи навро бармегардонад.ImmutableArray<T>ImmutableList<T>ImmutableDictionary<TKey, TValue>ImmutableHashSet<T>ImmutableSortedSet<T>ImmutableQueue<T>ImmutableStack<T>
Намуди махсуси коллексияро интихоб кардан вобаста ба талаботи вазифа аст: навъи маълумот, зарурати дастрасӣ бо индекс ё калид, талабот ба ягонагии унсурҳо, тартиби нигоҳдорӣ, иҷроиш, бехатарӣ бо сӯзанҳо ва тағйирёбандагӣ. Дар C#-и муосир, бештар истифодаи колексияҳои бо навъ аз фазоҳои ном System.Collections.Generic мебошанд.