C# kollektsioonide õpetus koos näidetega
⚡ Nutikas kokkuvõte
C# kollektsioonid pakuvad paindlikku viisi objektirühmade salvestamiseks ja haldamiseks. Erinevalt massiividest kasvavad ja kahanevad kollektsioonid käitusajal ning nimeruumid System.Collections ja System.Collections.Generic pakuvad valmistüüpe loendite, sõnastike, pinude ja järjekordade jaoks.
Eelmises õpetuses õppisime massiive kasutama C#-s. Teeme sellest kiire ülevaate, programmeerimises kasutatakse massiive seotud objektide komplekti grupeerimiseks. Seega võiks luua massiivi või täisarvude komplekti, millele pääseb juurde ühe muutuja nime kaudu.
Mis on kogud C#-s?
Kollektsioonid on sarnased Massiraadid, pakub see paindlikumat viisi objektide rühmaga töötamiseks.
Massiivides oleksite märganud, et peate eelnevalt määratlema massiivi elementide arvu. Seda tuli teha massiivi deklareerimisel.
Kuid kollektsioonis ei pea te kollektsiooni suurust eelnevalt määratlema. Saate elemente lisada või isegi elemente kogust igal ajal eemaldada. See peatükk keskendub sellele, kuidas saame töötada erinevate C#-s saadaolevate kogudega.
System.Collections klassid
.NET Framework koondab algsed mitte-üldised kollektsiooniklassid System.Collections nimeruumi. Allolev tabel võtab kokku peamised tüübid, mida saate kohe kasutada.
| kogumine | Kirjeldus |
| ArrayList | ArrayListi kollektsioon on sarnane massiividega andmetüüp C# keeles. Suurim erinevus on massiiviloendikogu dünaamiline olemus. |
| Stack | Stack on eriline korpuste kogum, mis esindab viimasena sisse, esimesena välja (LIFO) kontseptsiooni. |
| järjekorrad | „Järjekord“ on eriline kollektsioon, mis esindab põhimõtte „kes ees sisse, see ees välja“ põhimõtteid. |
| Hashtable | Räsitabel on spetsiaalne kogum, mida kasutatakse võtme-väärtuse üksuste salvestamiseks. |
| Sorteeritud loend | SortedList on kollektsioon, mis salvestab vaikimisi võtme-väärtuste paarid võtme kasvavas järjekorras. |
| BitArray | Bitimassiiv on andmestruktuuri massiiv, mis salvestab bitte. |
Üldised kollektsioonid C#-s
Ülaltoodud mitteüldised klassid salvestavad iga elemendi üldise objektina, mis tähendab, et kompilaator ei saa tüüpi kontrollida ja programm maksab väärtuste karpide eest väikese tasu. Selle lahendamiseks lisas C# nimeruumi System.Collections.Generic, kus iga kollektsioon on seotud ühe deklareeritud tüübiga.
Üldine kogumik, näiteks List aktsepteerib ainult stringe, seega vead tabatakse kompileerimise ajal ja elemendi tagasilugemisel pole vaja teisendust (code casting). See muudab üldised kollektsioonid turvalisemaks, kiiremaks ja hõlpsamini loetavaks, mistõttu on need tänapäevases C# koodis vaikevalik.
Kõige levinumad geneerilised kollektsioonid on loetletud allpool:
- Loend : Suuruselt muudetav, indeksipõhine loend, ArrayListi üldine asendaja.
- Sõnaraamat : Salvestab võtme-väärtuse paare kiirete, räsipõhiste otsingutega.
- Räsikomplekt : Hoiab ainult unikaalseid väärtusi ja toetab hulgaoperatsioone, näiteks liitmist.
- Järjekord : Esimesena sisse, esimesena välja kollektsioon, Queue'i geneeriline versioon.
- Stack : Viimane sisse, esimene välja kollektsioon, Stacki geneeriline versioon.
- Sorteeritud loend : Hoiab võtme-väärtuse paare võtme järgi kasvavas järjekorras sorteerituna.
C# loendikogu näide
List on kõige laialdasemalt kasutatav üldine kogum, kuna see käitub nagu dünaamiline massiiv. Allolev näide loob stringide loendi, lisab ja eemaldab elemente, loeb selle suuruse ja seejärel prindib ülejäänud väärtused. Kogu kood on kirjutatud faili Program.cs.
Step 1) Impordi nimeruum System.Collections.Generic ja deklareeri stringide loend.
Step 2) Lisa üksusi meetodiga „Lisa“ ja kustuta üks meetodiga „Eemalda“.
Step 3) Loe Count omadust ja seejärel käi foreach-lausega loendis tsükkel läbi.
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { List<string> tutorials = new List<string>(); tutorials.Add("Java"); tutorials.Add("Python"); tutorials.Add("Kotlin"); tutorials.Remove("Python"); Console.WriteLine(tutorials.Count); foreach (string tutorial in tutorials) { Console.WriteLine(tutorial); } Console.ReadKey(); } } }
Code Selgitus:-
- Nimeruum System.Collections.Generic imporditakse, et programmile oleks saadaval tüüp List.
- Uus nimekiri Luuakse fail nimega tutorials ja meetodi Add abil lisatakse kolm nime.
- Eemaldamismeetod kustutab väärtuse „Python”, mis jätab nimekirja kaks üksust.
- Omadus Count tagastab üksuste arvu ja foreach tsükkel prindib kõik ülejäänud väärtused järjekorras.
Programmi käivitamisel prindib see kõigepealt välja arvu 2, millele järgneb Java ja Kotlin eraldi ridadel. See näitab, kuidas kollektsiooni suurus käitusajal muutub, mida fikseeritud massiiv teha ei saa.
Erinevus massiivide ja kollektsioonide vahel C#-s
Mõlemad an massiivi ja kogum koondab seotud üksused ühe nime alla, kuid programmi käivitamisel käituvad nad erinevalt. Teadmine, millal igaüht kasutada, aitab teil kirjutada puhtamat ja tõhusamat koodi.
Peamised erinevused on loetletud allpool:
- Suurus: Massiivil on deklareerimisel määratud fikseeritud pikkus, samas kui kollektsioon võib igal ajal kasvada või kahaneda.
- Tüübi käsitlemine: Massiiv salvestab ühte tüüpi, samas kui kollektsioon võib olla tüübikindel geneeriliste tüüpidega või sisaldada segatüüpi objekte, kui see pole geneeriline.
- Asukoht: Massiivid on keelde sisse ehitatud, samas kui kollektsiooniklassid asuvad nimeruumides System.Collections ja System.Collections.Generic.
- Sisseehitatud toimingud: Kollektsioonid pakuvad valmis meetodeid üksuste lisamiseks, eemaldamiseks, otsimiseks ja sortimiseks, samas kui massiivid pakuvad ainult põhilist indekseeritud juurdepääsu.
- Parim kasutamine: Valige massiiv, kui elementide arv on teada ja fikseeritud, ning kogum, kui arv programmi töötamise ajal muutub.
Lühidalt, massiivid sobivad kõige paremini fikseeritud suurusega andmete jaoks, samas kui kollektsioonid pakuvad paindlikkust, mida enamik reaalse maailma rakendusi vajab.

