Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 22702|Odpoveď: 0

[Zdroj] Existuje niekoľko typov rollupov pre kolekcie v C#

[Kopírovať odkaz]
Zverejnené 11. 11. 2014 8:44:59 | | |
Kolekcia, ktorá predstavuje súbor objektov, ku ktorým sa dá pristupovať prechádzaním každého prvku (konkrétne je prístupná pomocou foreach loop)
Kolekcia obsahuje viacero prvkov, t. j. existuje objekt triedy kolekcie a objekty N prvkov

Keďže akákoľvek trieda kolekcie implementuje rozhranie IEnumerable, každý objekt triedy kolekcie má metódu GetEnumerator(), ktorá môže vrátiť objekt implementujúci rozhranie IEnumerator, ktorý nie je ani objektom triedy kolekcie, ani elementom triedy kolekcie, je to nezávislý objekt triedy. Tento objekt vám umožňuje prechádzať každý element objekt v objekte triedy kolekcie

Ak je trieda kolekcie používateľom definovaná trieda kolekcie, používateľ musí implementovať svoju metódu GetEnumerator(), inak nie je možné použiť slučky. Samozrejme, trieda IEnumerator zodpovedajúca tejto vlastnej kolekcii (trieda, ktorá implementuje rozhranie) musí byť tiež prispôsobená

Napríklad IEnumerátor zodpovedajúci triede kolekcie ArrayList je ArrayListEnumeratorSimple
            IEnumerátor zodpovedajúci triede Array collection je SZArrayEnumerator
      (Ani jedna trieda nie je pokrytá v dokumentácii .NET Framework Class Library (MSDN))

1. Rozhrania v System.Colloctions, ktoré reprezentujú správanie kolekcie, sú:
1) ICollection
Definujte veľkosť, počet enumov a metódy synchronizácie pre všetky kolekcie. Odvodené z IEnumerable
Definuje najzákladnejšie správanie triedy kolekcie a všetky triedy kolekcií implementujú toto rozhranie (základné rozhranie)
Ale jeho správanie je príliš základné: je to hlavne vlastnosť Counta a nemá veľký zmysel implementovať ho samostatne

2) IEnumerable
Odhalte enumeráciu, ktorá podporuje jednoduché iterácie na množine
Má len jednu metódu, GetEnumerator(), ktorá vracia rozhranie IEnumeratora, cez ktoré môže prechádzať kolekciou
V podstate všetky triedy kolekcií implementujú toto rozhranie

3) IList
Implementácia IList je kolekcia hodnôt, ktoré sú triediteľné a prístupné podľa indexu pre svojich členov, pričom sama implementuje rozhrania ICollection a IEnumerable
je abstraktná základná trieda pre všetky zoznamy. Existujú tri kategórie implementácií IList: iba na čítanie, pevná veľkosť a variabilná veľkosť.

4) IDictionary
Implementácia IDictionary je zbierka párov kľúč/hodnota, ktorá sama implementuje ICollection a IEnumerable rozhrania
je základné rozhranie kolekcie párov kľúč/hodnota. Existujú tri kategórie implementácií IDictionary: iba na čítanie, pevná veľkosť a variabilná veľkosť.
IDictionary môže byť nazývaný slovník, mapa alebo zoznam shash súborov a pristupuje k hodnotám na základe kľúčov (akéhokoľvek typu).

2. Triedy kolekcií, ktoré môžu byť priamo použité v System.Collections, sú:
1) ArrayList
Implementujte rozhrania: IList, ICollection, IEnumerable
Pokiaľ kolekcia nie je upravovaná, ArrayList môže bezpečne podporovať viacero čítačiek naraz
Keď sa prvky pridávajú do ArrayListu, kapacita sa automaticky zvyšuje na požiadanie preusporiadaním (2-násobné zvýšenie)
Ak potrebujete vytvoriť pole objektov, ale neviete jeho veľkosť vopred, môžete použiť ArrayList
ArrayList označuje všetky prvky ako objekty, preto je potrebné ho zadať pri prístupe k prvkom v ArrayList
Výhody: Dynamická zmena veľkosti, flexibilné a pohodlné vkladanie a odstraňovanie prvkov, triediteľnosť
Nevýhody: Výkon vkladania nie je taký dobrý ako u polí, nie pri silných typoch

2) BitArray
Implementujte rozhrania: ICollection a IEnumerable
Spravovať komprimované polia bitových hodnôt.

3) Hashtable
Implementujte rozhrania: IDictionary, ICollection, IEnumerable
Môžete voľne pridávať a odstraňovať prvky do hashtable, niektoré ako ArrayList, ale bez výkonnostnej záťaže

4) SortedList
Implementujte rozhrania: IDictionary, ICollection, IEnumerable
SortedLIst kombinuje výhody ArrayList a Hashtable a môže byť zoradený podľa hodnoty kľúča

5) Queue
Implementujte rozhrania: ICollection a IEnumerable
Quequey sú fronty, prístup prvý dnu, prvý von, prístup k jednotlivým prvkom
Môžete zavolať metódu GetEnumerator() objektu Queque, aby objekt IEnumerator iteroval prvky vo fronte

6) Stack
Implementujte rozhrania: ICollection a IEnumerable
Zásobník je zásobník, ktorý pristupuje k jednotlivým prvkom na princípe posledný dnu, prvý von.
Môžete zavolať metódu GetEnumerator() objektu Stack, aby objekt IEnumerator iteroval prvky v zásobníku

3. Vyššie uvedené triedy kolekcií sú všetky všeobecné triedy kolekcií a väčšina prvkov, ktoré prijímajú, je typu objektu, keď je objekt vložený do
Po skončení kolekcie sa pôvodné informácie o type strácajú – teda tieto všeobecné triedy kolekcií nie sú silno typované
Riešením je použiť silne typované triedy kolekcií
Menný priestor System.Collections
System.Collections.Specialized menný priestor Niektoré triedy môžu spĺňať požiadavky a môžu byť použité priamo alebo zdedené





Predchádzajúci:Otvorený list väčšine idiotov na prahu Dňa slobodných
Budúci:C# Generický Range Rover (zákruta)
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com