Sobes.tech
Junior

Дар C# кадом намудҳои ҷамъоварӣ мавҷуданд?

sobes.tech AI

Ҷавоб аз AI

C# пешниҳод мекунад намудҳои зиёди коллексияҳо барои нигоҳдорӣ ва идоракунии маълумотҳо, ки дар фазоҳои номҳои гуногун ҷойгир шудаанд (асосан System.Collections, System.Collections.Generic, System.Collections.Concurrent, System.Collections.Immutable). Онҳоро метавон ба асосҳои зерин тақсим кард:

  1. Барои навъи маълумоте, ки нигоҳ дошта мешавад:

    • Бе навъ (Untyped): Объектҳоро бо навъи object нигоҳ медорад (System.Collections). Талаб мекунад, ки навъҳоро табдил диҳад ва метавонад камтар самаранок бошад.
    • Бо навъ (Generic): Объектҳоро бо навъи муайян нигоҳ медорад (System.Collections.Generic). Бехатарии навъ ва иҷрои беҳтарро таъмин мекунад.
  2. Барои сохтори маълумот:

    • Листҳо (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> (бо навъ)
  3. Барои бехатарии раванди кор бо сӯзанҳо:

    • Бе бехатарӣ (Non-thread-safe): Бисёре аз коллексияҳои стандартӣ (System.Collections, System.Collections.Generic). Талаб мекунад, ки барои кор бо бисёр сӯзанҳо, ҳамоҳангсозии беруна анҷом дода шавад.
    • Бехатар бо сӯзанҳо (Concurrent): Барои кор дар муҳити бисёрсӯзанӣ бехатар тарҳрезӣ шудаанд (System.Collections.Concurrent).
      • ConcurrentBag<T>
      • ConcurrentDictionary<TKey, TValue>
      • ConcurrentQueue<T>
      • ConcurrentStack<T>
  4. Барои тағйирёбандагӣ:

    • Таъғирёбанда (Mutable): Бисёре аз коллексияҳо имкон медиҳанд, ки унсурҳоро илова, тоза ва тағйир додан.
    • Бе тағйирёбанда (Immutable): Пас аз эҷод кардан, тағйирнопазир мебошанд (System.Collections.Immutable). Ҳар як амали тағйирот, маҷмӯаи навро бармегардонад.
      • ImmutableArray<T>
      • ImmutableList<T>
      • ImmutableDictionary<TKey, TValue>
      • ImmutableHashSet<T>
      • ImmutableSortedSet<T>
      • ImmutableQueue<T>
      • ImmutableStack<T>

Намуди махсуси коллексияро интихоб кардан вобаста ба талаботи вазифа аст: навъи маълумот, зарурати дастрасӣ бо индекс ё калид, талабот ба ягонагии унсурҳо, тартиби нигоҳдорӣ, иҷроиш, бехатарӣ бо сӯзанҳо ва тағйирёбандагӣ. Дар C#-и муосир, бештар истифодаи колексияҳои бо навъ аз фазоҳои ном System.Collections.Generic мебошанд.