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): "биринчи келген, биринчи чыккан" принциби менен иштеген коллекциялар.
Queue(түрсүз)Queue<T>(түргө негизделген)
- Топтор (Stacks): "акыркы келген, биринчи чыккан" принциби менен иштеген коллекциялар.
Stack(түрсүз)Stack<T>(түргө негизделген)
- Тизмелер (Lists): Тизилген коллекциялар, элементтерге индекс аркылуу кирүү.
-
Жиптердин коопсуздугу боюнча:
- Жиптер менен иштөөдө коопсуз эмес: Көпчүлүк стандарттык коллекциялар (
System.Collections,System.Collections.Generic). Көпжиптүү иштөө үчүн тышкы синхрондаштыруу талап кылынат. - Жиптер менен иштөөдө коопсуз (Concurrent): Көпжиптүү чөйрөдө коопсуз иштөө үчүн иштелип чыккан (
System.Collections.Concurrent).ConcurrentBag<T>ConcurrentDictionary<TKey, TValue>ConcurrentQueue<T>ConcurrentStack<T>
- Жиптер менен иштөөдө коопсуз эмес: Көпчүлүк стандарттык коллекциялар (
-
Өзгөрүлмөлүүлүк боюнча:
- Өзгөрүлмө (Mutable): Көпчүлүк коллекциялар элементтерди кошууга, өчүрүүгө жана өзгөртүүгө мүмкүндүк берет.
- Өзгөрүлбөс (Immutable): түзүлгөндөн кийин өзгөрбөйт (
System.Collections.Immutable). Ар бир өзгөртүү операциясы жаңы коллекцияны кайтарат.ImmutableArray<T>ImmutableList<T>ImmutableDictionary<TKey, TValue>ImmutableHashSet<T>ImmutableSortedSet<T>ImmutableQueue<T>ImmutableStack<T>
Конкреттүү коллекция түрүн тандоо иштин талаптарына көз каранды: маалымат түрү, индекс же ачкыч аркылуу кирүү зарылдыгы, уникалдуулук талаптары, сактоо тартиби, иштөө ылдамдыгы, жиптердин коопсуздугу жана өзгөрмөлүүлүк. Заманауи C#да эң көп колдонулгандар System.Collections.Generic кеңейтүүсүндөгү типтелген коллекциялар болуп саналат.