Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 22702|Válasz: 0

[Forrás] Többféle rollup létezik a C#-ban a gyűjteményekhez

[Linket másol]
Közzétéve 2014. 11. 11. 8:44:59 | | |
Egy gyűjtemény, amely egy olyan objektumhalmazt képvisel, amelyhez minden elem áthaladásával érhető el (különösen foreach ciklus használatával)
Egy gyűjtemény több elemet tartalmaz, azaz van egy gyűjteményosztály objektum és N elem objektum

Mivel bármely gyűjteményosztály megvalósítja az IEnumerable felületet, bármely gyűjteményosztály objektumnak van egy GetEnumerator() metódusa, amely vissza tud adni egy olyan objektumot, amely az IEnumerator interfészt valósítja meg, amely sem gyűjteményosztály objektum, sem gyűjteményelem osztályobjektum, hanem független osztályobjektum. Ez az objektum lehetővé teszi, hogy minden elem objektumon áthaladj a gyűjteményosztály objektumában

Ha a gyűjteményosztály felhasználó által definiált gyűjteményosztály, a felhasználónak meg kell valósítania a GetEnumerator() metódusát, különben a hurkok nem használhatók. Természetesen az IEnumerator osztály, amely ehhez az egyedi gyűjteményosztályhoz (az az interfészt megvalósító osztályhoz) is testreszabni kell

Például az IEnumerator, amely a ArrayList gyűjtemény osztályának felel meg, az ArrayListEnumeratorSimple
            Az IEnumerator, amely a Tömbgyűjtemény osztályhoz tartozik, a SZArrayEnumerator.
      (Egyik osztály sem szerepel a .NET Framework Class Library dokumentációjában (MSDN))

1. A System.Colloctions interfészei, amelyek a gyűjtemény viselkedését képviselik:
1) OLLECTION
Határozd meg az összes gyűjtemény méretét, számát és szinkronizációs módszereit. IEnumerable alapján származtatva
Ez határozza meg a gyűjteményosztály legalapvetőbb viselkedését, és minden gyűjteményosztály ezt az interfészt (alapinterfészt) valósítja meg
De a viselkedése túl alapvető: főként egy Count tulajdonság, és nincs túl értelme egyedül implementálni

2)IEnumerable
Olyan felsorolást, amely támogatja az egyszerű iterációkat egy halmazon
Csak egy módszere van, a GetEnumerator(), amely egy IEnumerator interfészt ad vissza, amelyen keresztül áthaladhat a gyűjteményen
Gyakorlatilag minden gyűjteményosztály ezt az interfészt valósítja meg

3) IList
Az IList megvalósítás egy olyan értékgyűjtemény, amelyek rendezhetők, és indexen keresztül elérhetők tagjai számára, maga pedig megvalósítja az ICollection és IEnumerable interfészeket
az összes lista absztrakt alaposztálya. Az IList megvalósításainak három kategóriája van: csak olvasható, fix méretű és változóméretű.

4) Azonosító
Az IDictionary megvalósítás kulcs/értékpárok gyűjteménye, amely maga valósítja meg az ICollection és IEnumerable interfészeket
egy kulcs/értékpár alapinterfésze. Három kategóriába tartozó IDictionary megvalósítás létezik: csak olvasható, fix méretű és változóméretű.
Az IDictionary szótárnak, térképnek vagy shash listának nevezhető, és kulcsok alapján ér hozzá értékeket (bármilyen típusból).

2. A System.Collections-ben közvetlenül használható gyűjteményosztályok a következők:
1)ArrayList
Interfészek megvalósítása: IList, ICollection, IEnumerable
Amíg a gyűjtemény nem változik, a ArrayList biztonságosan támogathatja több olvasót egyszerre
Ahogy elemeket adnak hozzá a ArrayListhez, a kapacitás automatikusan növeli igény szerint áthelyezéssel (2-szeres növeléssel)
Ha objektumokból álló tömböt kell létrehoznod, de előre nem tudod a tömb méretét, használhatod a ArrayList-et
Az ArrayList minden elemet objektumként jelöl, ezért be kell gépelni, amikor elemeket érsz el a ArrayList-ben
Előnyök: Dinamikus változtatás a méret, rugalmas és kényelmes elemek behelyezése és eltávolítása, szűrhetőség
Hátrányok: Az illesztési teljesítmény nem olyan jó, mint a tömbök, nem erős típusok

2)BitArray
Interfészek megvalósítása: ICollection és IEnumerable
Kezeld a tömörített bitértékű tömböket.

3) Hashtable
Interfészek megvalósítása: IDictionary, ICollection, IEnumerable
Szabadon hozzáadhatsz vagy eltávolíthatsz elemeket a Hashtable-be, néhány, mint az ArrayList, de teljesítményterhelés nélkül

4)SortedList
Interfészek megvalósítása: IDictionary, ICollection, IEnumerable
A SortedLIst ötvözi a ArrayList és a Hashtable előnyeit, és kulcsérték szerint rendezhető

5) Sor
Interfészek megvalósítása: ICollection és IEnumerable
A queque-ek sorok, az egyes elemekhez való elsőként belépő, első kilépés
Hívhatod a Queque objektum GetEnumerator() metódusát, hogy az IEnumerator objektum átfutja a sorban lévő elemeket

6) Stack
Interfészek megvalósítása: ICollection és IEnumerable
A stack egy olyan halom, amely egyes elemekhez fér hozzá utolsó, elsőként kilépő alapon
Hívhatod a Stack objektum GetEnumerator() metódusát, hogy az IEnumerator objektum iterálja a stack elemeit

3. A fent említett gyűjteményosztályok mind általános gyűjteményosztályok, és az általuk elfogadott elemek többsége az objektum típusú, amikor az objektumot behelyezzük
A gyűjtemény után az eredeti típusinformáció elveszik – vagyis ezek az általános gyűjteményosztályok nem erősen típusozottak
A megoldás az erősen típusozott gyűjteményosztályok használata
System.Collections névtér
System.Collections.Specialized névtér Néhány osztály megfelel a követelményeknek, közvetlenül vagy öröklő vagy használható





Előző:Nyílt levél a legtöbb farknak az Egyedülállók Napja előestéjén
Következő:C# Általános Range Rover (Turn)
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com