Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 22702|Odpověď: 0

[Zdroj] Existuje několik typů rollupů pro kolekce v C#

[Kopírovat odkaz]
Zveřejněno 11.11.2014 8:44:59 | | |
Kolekce, která představuje sadu objektů, ke kterým lze přistupovat procházením každého prvku (zejména lze k nim přistupovat pomocí foreach smyčky)
Kolekce obsahuje více prvků, tj. existuje objekt třídy kolekce a objekty s N prvky

Protože každá třída kolekce implementuje rozhraní IEnumerable, má každý objekt třídy kolekce metodu GetEnumerator(), která může vrátit objekt implementující rozhraní IEnumerator, který není ani objektem třídy kolekce, ani elementem třídy kolekce, je to nezávislý objekt třídy. Tento objekt vám umožňuje procházet každý element objekt v objektu kolekce

Pokud je třída kolekce uživatelem definovaná třída kolekce, uživatel musí implementovat svou metodu GetEnumerator(), jinak nelze použít smyčky. Samozřejmě, třída IEnumerator odpovídající této třídě vlastní kolekce (třída, která implementuje toto rozhraní) musí být také přizpůsobena

Například IEnumerátor odpovídající třídě kolekce ArrayList je ArrayListEnumeratorSimple
            IEnumerátor odpovídající třídě kolekce Array je SZArrayEnumerator
      (Ani jedna třída není pokryta v dokumentaci .NET Framework Class Library (MSDN))

1. Rozhraní v System.Colloctions, která reprezentují chování kolekce, jsou:
1) ICollection
Definujte velikost, počet enumů a metody synchronizace pro všechny kolekce. Odvozeno z IEnumerable
Definuje nejzákladnější chování třídy kolekce a všechny třídy kolekcí implementují toto rozhraní (základní rozhraní)
Ale jeho chování je příliš základní: je to hlavně vlastnost Counta a nedává moc smysl ji implementovat samostatně

2) IEnumerable
Představte enumeraci, která podporuje jednoduché iterace na množině
Má pouze jednu metodu, GetEnumerator(), která vrací rozhraní IEnumerator, přes které může procházet kolekcí
V podstatě všechny třídy kolekcí implementují toto rozhraní

3) IList
Implementace IList je kolekce hodnot, které lze třídit a k nim lze přistupovat podle indexu pro jejich členy, a sama implementuje rozhraní ICollection a IEnumerable
je abstraktní základní třída pro všechny seznamy. Existují tři kategorie implementací IList: pouze pro čtení, pevná velikost a proměnná velikost.

4) IDictionary
Implementace IDictionary je kolekce dvojic klíč/hodnota, která sama implementuje rozhraní ICollection a IEnumerable
je základní rozhraní kolekce párů klíč/hodnota. Existují tři kategorie implementací IDictionary: pouze pro čtení, s pevnou velikostí a s proměnnou velikostí.
IDictionary lze nazývat slovníkem, mapou nebo shash seznamem a přistupuje k hodnotám na základě klíčů (jakéhokoliv typu).

2. Třídy kolekcí, které lze přímo použít v System.Collections, jsou:
1) ArrayList
Implementujte rozhraní: IList, ICollection, IEnumerable
Pokud není kolekce upravována, může ArrayList bezpečně podporovat více čtenářů současně
Jak jsou prvky přidávány do ArrayListu, kapacita se automaticky zvyšuje na vyžádání přerozdělením (2x zvýšení)
Pokud potřebujete vytvořit pole objektů, ale nevíte předem velikost pole, můžete použít ArrayList
ArrayList označuje všechny prvky jako objekty, proto je nutné jej napsat při přístupu k prvkům v ArrayList
Výhody: Dynamická změna velikosti, flexibilní a pohodlné vkládání a odstraňování prvků, tříditelnost
Nevýhody: Výkon vkládání není tak dobrý jako u polí, nejsou to silné typy

2) BitArray
Implementujte rozhraní: ICollection a IEnumerable
Spravujte komprimovaná pole bitových hodnot.

3) Hashtable
Implementujte rozhraní: IDictionary, ICollection, IEnumerable
Prvky můžete volně přidávat a odebírat do hashtable, některé jako ArrayList, ale bez výkonu

4) SortedList
Implementujte rozhraní: IDictionary, ICollection, IEnumerable
SortedLIst kombinuje výhody ArrayList a Hashtable a lze jej třídit podle hodnoty klíče

5) Fronta
Implementujte rozhraní: ICollection a IEnumerable
Quequey jsou fronty, přístup první dovnitř, první ven k jednotlivým prvkům
Můžete zavolat metodu GetEnumerator() objektu Queque, aby objekt IEnumerator procházel prvky ve frontě

6) Stack
Implementujte rozhraní: ICollection a IEnumerable
Zásobník je zásobník, který přistupuje k jednotlivým prvkům na principu poslední dovnitř, první ven
Můžete zavolat metodu GetEnumerator() objektu Stack, abyste přiměli objekt IEnumerator procházet prvky ve zásobníku

3. Výše zmíněné třídy kolekcí jsou všechny obecné třídy kolekcí a většina prvků, které přijímají, patří typu objektu, když je objekt vložen do
Po skončení kolekce se původní informace o typu ztrácí – tedy tyto obecné třídy kolekcí nejsou silně typované
Řešením je použít silně typované třídy kolekcí
Jmenný prostor System.Collections
System.Collections.Specialized jmenný prostor Některé třídy mohou splňovat požadavky a mohou být použity přímo nebo zděděné





Předchozí:Otevřený dopis většině hajzlů na prahu Dne svobodných
Další:C# Generický Range Rover (zatáčení)
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com