Ի՞նչ տեսակների հավաքածուներ կան 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): Հետևական հավաքածուներ, մուտք դեպի տարրեր՝ ինդեքսով:
-
Նպատակային անվտանգություն՝
- Անանվտանգ (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 տարածքի տիպային հավաքածուները։