Rinkinys, vaizduojantis objektų rinkinį, kurį galima pasiekti pereinant kiekvieną elementą (ypač jį galima pasiekti naudojant foreach ciklą) Rinkinyje yra keli elementai, t. y. yra kolekcijos klasės objektas ir N elemento objektai
Kadangi bet kuri rinkinio klasė įgyvendina IEnumerable sąsają, bet kuris rinkinio klasės objektas turi GetEnumerator() metodą, kuris gali grąžinti objektą, kuris įgyvendina IEnumerator sąsają, kuri nėra nei rinkinio klasės objektas, nei rinkinio elemento klasės objektas, tai yra nepriklausomas klasės objektas. Šis objektas leidžia kartoti kiekvieną rinkinio klasės objekto elemento objektą
Jei rinkinio klasė yra vartotojo apibrėžta rinkinio klasė, vartotojas turi įdiegti savo GetEnumerator() metodą, kitaip kilpos negali būti naudojamos. Žinoma, IEnumerator klasė, atitinkanti šią pasirinktinio rinkinio klasę (klasę, kuri įgyvendina sąsają), taip pat turi būti pritaikyta
Pavyzdžiui, IEnumerator, atitinkantis ArrayList rinkinio klasę, yra ArrayListEnumeratorSimple IEnumerator, atitinkantis masyvo rinkinio klasę, yra SZArrayEnumerator (Nė viena klasė nėra įtraukta į .NET Framework klasių bibliotekos dokumentaciją (MSDN))
1. System.Colloctions sąsajos, atspindinčios rinkinio elgseną, yra šios: 1) Integracija Nurodyti visų rinkinių dydį, išvardijimų skaičių ir sinchronizavimo metodus. Išvesta iš IEnumerable Jis apibrėžia paprasčiausią kolekcijos klasės elgesį, o visos kolekcijos klasės įgyvendina šią sąsają (bazinę sąsają) Tačiau jo elgesys yra pernelyg paprastas: tai daugiausia grafo savybė, ir nėra daug prasmės ją įgyvendinti vien
2) IE suskaičiuojamas Išvardijimo, palaikančio paprastas aiteracijas rinkinyje, rodymas Jis turi tik vieną metodą, GetEnumerator(), kuris grąžina IEnumerator sąsają, per kurią jis gali pereiti rinkinį Iš esmės visos kolekcijos klasės įgyvendina šią sąsają
3) IList IList įgyvendinimas yra rūšiuojamų reikšmių rinkinys, kurį galima pasiekti pagal indeksą savo nariams, ir jis pats įgyvendina ICollection ir IEnumerable sąsajas yra abstrakti visų sąrašų bazinė klasė. Yra trys IList diegimų kategorijos: tik skaityti, fiksuoto dydžio ir kintamo dydžio.
4) IDictionary IDictionary įgyvendinimas yra rakto/reikšmės porų rinkinys, kuris pats įgyvendina ICollection ir IEnumerable sąsajas yra pagrindinė rakto/reikšmės porų rinkinio sąsaja. Yra trys IDictionary diegimo kategorijos: tik skaityti, fiksuoto dydžio ir kintamo dydžio. IDictionary gali būti vadinamas žodynu, žemėlapiu arba shash sąrašu, ir jis pasiekia reikšmes pagal raktus (bet kokio tipo).
2. Rinkinio klasės, kurias galima naudoti tiesiogiai System.Collections, yra šios: 1) Masyvų sąrašas Įgyvendinti sąsajas: IList, ICollection, IEnumerable Kol rinkinys nėra modifikuotas, ArrayList gali saugiai palaikyti kelis skaitytojus vienu metu Kai elementai įtraukiami į ArrayList, pajėgumas automatiškai padidinamas pagal poreikį perskirstant (2 kartus padidinant) Jei reikia sukurti objektų masyvą, bet iš anksto nežinote masyvo dydžio, galite naudoti ArrayList ArrayList visus elementus vadina objektais, todėl jį reikia įvesti pasiekiant elementus ArrayList Argumentai "už": dinamiškas dydžio keitimas, lankstus ir patogus elementų įterpimas ir išėmimas, rūšiavimas Trūkumai: Įterpimo našumas nėra toks geras kaip masyvų, o ne stiprių tipų
2) BitArray Įdiegti sąsajas: ICollection ir IEnumerable Tvarkykite suspaustus bitų reikšmių masyvus.
3) Maišos lentelė Įdiegti sąsajas: IDictionary, ICollection, IEnumerable Galite laisvai pridėti ir pašalinti elementus į Hashtable, kai kurie kaip ArrayList, bet be našumo pridėtinių išlaidų
4) Rūšiuotas sąrašas Įdiegti sąsajas: IDictionary, ICollection, IEnumerable SortedLIst sujungia ArrayList ir Hashtable privalumus ir gali būti rūšiuojamas pagal rakto reikšmę
5) Eilė Įdiegti sąsajas: ICollection ir IEnumerable Queques yra eilės, pirmas į, pirmas išeina prieiga prie atskirų elementų Galite iškviesti Queque objekto GetEnumerator() metodą, kad IEnumerator objektas kartotų eilėje esančius elementus
6) Krūva Įdiegti sąsajas: ICollection ir IEnumerable Rietuvė yra rietuvė, kuri pasiekia atskirus elementus "paskutinis į, pirmas išeina" Galite iškviesti Stack objekto GetEnumerator() metodą, kad IEnumerator objektas kartotų rietuvės elementus
3. Aukščiau paminėtos rinkinio klasės yra visos bendrosios kolekcijos klasės, ir dauguma elementų, kuriuos jos priima, yra objekto tipo, kai objektas yra įdėtas į Po surinkimo prarandama originali tipo informacija - tai yra, šios bendrosios kolekcijos klasės nėra stipriai įvestos Išeitis yra naudoti stipriai įvestas rinkimo klases System.Collections vardų sritis System.Collections.Specialized vardų sritis Kai kurios klasės gali atitikti reikalavimus ir gali būti naudojamos tiesiogiai arba paveldėtos
|