Gyakran használt gyűjteménytípusok
A gyűjteménytípusok az adatgyűjtés különböző módjait jelölik, például kivonattáblákat, üzenetsorokat, vermeket, zsákokat, szótárakat és listákat.
Minden gyűjtemény közvetlenül vagy ICollection<T> közvetve a ICollection felületeken alapul. IList és IDictionary általános megfelelőik mind ebből a két felületből származnak.
Az olyan gyűjteményekben, amelyek alapulnak IList vagy közvetlenül alapulnak ICollection, minden elem csak egy értéket tartalmaz. Ezek a típusok a következők:
Az interfészen IDictionary alapuló gyűjteményekben minden elem tartalmaz egy kulcsot és egy értéket is. Ezek a típusok a következők:
- Hashtable
- SortedList
- SortedList<TKey,TValue>
- Dictionary<TKey,TValue>
- ConcurrentDictionary<TKey,TValue>
Az KeyedCollection<TKey,TItem> osztály egyedi, mert az értékek közé beágyazott kulcsokat tartalmazó értékek listája. Ennek eredményeképpen úgy viselkedik, mint egy lista és egy szótár.
Ha hatékony többszálú gyűjtemény-hozzáférésre van szüksége, használja az általános gyűjteményeket a System.Collections.Concurrent névtérben.
Az Queue és Queue<T> az osztályok az első előtti listákat biztosítják. Az Stack osztályok az Stack<T> utolsó előtti listákat biztosítják.
Erős gépelés
Az általános gyűjtemények a legjobb megoldás az erős gépelésre. Ha például egy gyűjteményen kívül Int32 bármilyen típusú elemet ad hozzá, List<Int32>
fordítási időt jelző hibát okoz. Ha azonban a nyelv nem támogatja az általánosakat, a System.Collections névtér absztrakt alaposztályokat is tartalmaz, amelyeket kiterjeszthet az erősen gépelt gyűjteményosztályok létrehozására. Ezek az alaposztályok a következők:
A gyűjtemények eltérőek
A gyűjtemények az elemek tárolásának, rendezésének és összehasonlításának módjában, valamint a keresések végrehajtásában különböznek.
Az SortedList osztály és az SortedList<TKey,TValue> általános osztály az osztály és az Hashtable általános osztály rendezett verzióit Dictionary<TKey,TValue> biztosítja.
Minden gyűjtemény nulla alapú indexeket használ, kivéve Arraya nem nulla alapú tömböket.
Egy vagy több KeyedCollection<TKey,TItem> elem elemeit SortedList a kulcs vagy az elem indexe alapján érheti el. Egy vagy több Dictionary<TKey,TValue> elem elemeit Hashtable csak az elem kulcsával érheti el.
A LINQ használata gyűjteménytípusokkal
A LINQ to Objects szolgáltatás általános mintát biztosít a memóriában lévő objektumok elérésére bármilyen típusú, implementáló IEnumerable vagy IEnumerable<T>. A LINQ-lekérdezések számos előnnyel rendelkeznek a szabványos szerkezetekkel, például foreach
a hurkokkal szemben:
- Tömörek és könnyebben érthetők.
- Szűrhetnek, rendezhetnek és csoportosíthatnak adatokat.
- Javíthatják a teljesítményt.
További információ: LINQ to Objects (C#), LINQ to Objects (Visual Basic), parallel LINQ (PLINQ).
Kapcsolódó témakörök
Cím | Leírás |
---|---|
Gyűjtemények és adatstruktúrák | Ismerteti a .NET-ben elérhető gyűjteménytípusokat, beleértve a vermeket, az üzenetsorokat, a listákat, a tömböket és a szótárakat. |
Kivonatoló és szótárgyűjtemény-típusok | Az általános és a nemgenerikus kivonatalapú szótártípusok funkcióit ismerteti. |
Rendezett gyűjteménytípusok | Azokat az osztályokat ismerteti, amelyek rendezési funkciót biztosítanak listákhoz és csoportokhoz. |
Generikus | Ismerteti az általános szolgáltatások használatát, beleértve a .NET által biztosított általános gyűjteményeket, meghatalmazottakat és interfészeket. Hivatkozásokat tartalmaz a C#, a Visual Basic és a Visual C++ funkciódokumentációira, valamint az olyan támogató technológiákra, mint a tükröződés. |
Referencia
System.Collections.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: