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. Նպատակային անվտանգություն՝

    • Անանվտանգ (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 տարածքի տիպային հավաքածուները։