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): "биринчи келген, биринчи чыккан" принциби менен иштеген коллекциялар.
      • Queue (түрсүз)
      • Queue<T> (түргө негизделген)
    • Топтор (Stacks): "акыркы келген, биринчи чыккан" принциби менен иштеген коллекциялар.
      • Stack (түрсүз)
      • Stack<T> (түргө негизделген)
  3. Жиптердин коопсуздугу боюнча:

    • Жиптер менен иштөөдө коопсуз эмес: Көпчүлүк стандарттык коллекциялар (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 кеңейтүүсүндөгү типтелген коллекциялар болуп саналат.