Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 23002|Atsakyti: 0

[Šaltinis] Yra keletas C# kolekcijų apibendrinimų tipų

[Kopijuoti nuorodą]
Paskelbta 2014-11-11 08:44:59 | | |
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





Ankstesnis:Atviras laiškas daugumai penių Vienišių dienos išvakarėse
Kitą:C# bendrasis "Range Rover" (posūkis)
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com