Kolekce v rozhraní .NET Framework s jazykem Visual Basic
.NET Framework poskytuje specializované třídy pro ukládání a načítání dat. Tyto třídy poskytují podporu pro zásobníky, fronty, seznamy a tabulky hash hodnot. Většina tříd kolekcí implementuje stejné rozhraní. Pokud potřebujete můžete vytvořit vlastní třídy kolekce, implementováním těchto rozhraní.
Měli byste zjistit, jaký typ kolekce je nejvhodnější pro vaše potřeby.
Rozdíly mezi třídami kolekcí v jazyce Visual Basic a .NET Framework
.NET Framework Kolekce třídy jsou definovány v System.Collections, System.Collections.Generic, System.Collections.Specialized, a System.Collections.ObjectModel obory názvů. K hlavním rozdílům mezi třídami kolekcí Visual Basic a .NET Framework patří následující:
Založené na indexu. .NET Framework Kolekce jsou založeny na nule, zatímco kolekce Visual Basicvycházející z jedničky. To znamená, že prvky kolekce Visual Basicobsahují hodnoty indexu od 1 do hodnoty vlastnosti Count, zatímco prvky kolekce .NET Framework obsahují hodnoty indexu 0 až jedna nižší než hodnoty vlastnosti Count kolekce.
Typy elementů Kolekce Visual Basic podporuje prvky typu Object. Tato kolekce není typově bezpečná – můžete přidat element o libovolném datovém typu. Obvykle dochází ke zhoršení výkonu, protože je nutné převést prvky z datového typu Object na správný typ.
Některé kolekce .NET Framework mají také prvky typu Object, ale mnoho další je typově silných, což znamená, že podporují prvky určitého typu a tímto zajišťují bezpečnost typů, což obvykle vede k dosažení optimálního výkonu.
Prvky s klíčem. Kolekce Visual Basic umožňuje zadání klíče v případě, že do něj předáte element. Klíč je jedinečný řetězec, které lze použít později k získání přístup k tomuto konkrétnímu elementu. Kolekce .NET Framework se lišit v ohledu klíčů. Některé klíče podporují a některé nikoli.
Třídy System.Collections
Třídy v oboru názvů System.Collections neukládají prvky s konkrétním typem objekty, ale jako objekty typu Object.
V následující tabulce jsou uvedeny některé z běžně používaných tříd:
Třída |
Popis |
Implementuje rozhraní IList pomocí pole, jehož velikost se podle potřeby dynamicky mění. |
|
Spravuje kompaktní pole bitových hodnot, které jsou reprezentovány ve formě hodnot Boolean, kde True označuje, že bit je zapnut (1) a False označuje že bit je vypnut (0). |
|
Představuje kolekci páru klíč/hodnota, které jsou uspořádány na základě hash hodnot klíče. |
|
Představuje kolekci objektů first-in-first-out (FIFO). |
|
Představuje jednoduchou negenerickou kolekci objektů last-in-first-out (LIFO). |
Třídy System.Collections.Generic a System.Collections.ObjectModel
Obor názvů System.Collections.Generic a System.Collections.ObjectModel poskytuje obecné typy, které umožňují vytvořit typové silně kolekce a určit typ datových prvků při jejich vytváření.
V následující tabulce jsou uvedeny některé z běžně používaných tříd:
Třída |
Popis |
Poskytuje základní třída pro obecné kolekce. |
|
Představuje kolekci páru klíč/hodnota, které jsou uspořádány na základě hash hodnot klíče. |
|
Poskytuje abstraktní základní třídu pro kolekce, jejíž klíče jsou vnořené v rámci hodnot. |
|
Představuje dvakrát propojený seznam. |
|
Představuje uzel v LinkedList<T>. Od této třídy nelze dědit. |
|
Implementuje rozhraní IList<T> pomocí pole, jehož velikost se podle potřeby dynamicky mění. |
|
Představuje kolekci objektů first-in-first-out (FIFO). |
|
Představuje kolekci párů klíč/hodnota, které jsou seřazeny v klíči. |
|
Představuje kolekci párů klíč/hodnota, které jsou seřazeny podle klíče na základě přidružené implementace IComparer<T>. |
|
Představuje kolekci s proměnnou velikostí last-in-first-out (LIFO) o instancích stejného doplňkového typu. |
|
Poskytuje základní třída pro obecnou jen pro čtení kolekci. |
Třídy System.Collections.Specialized
Obor názvů System.Collections.Specialized poskytuje specializované a typově silné třídy kolekcí, například kolekce pouze pro řetězce a propojené seznamy a hybridní slovníky.
V následující tabulce jsou uvedeny některé z běžně používaných tříd:
Třída |
Popis |
Vytvoří kolekcí, které nerozlišují velká a malá písmena v řetězci. |
|
Implementuje IDictionary pomocí ListDictionary v případě, že je kolekce malá a poté přepne na Hashtable v případě, že se kolekce stane velkou. |
|
Implementuje IDictionary s použití jednotlivě propojeného seznamu. Doporučené pro kolekce, které obvykle obsahují 10 a méně položek. |
|
Obsahuje abstraktní základní třídy pro kolekce přidružených řetězcových klíčů a hodnot objektů, ke kterým lze přistupovat pomocí klíče nebo indexu. |
|
Představuje kolekce přidružených řetězcových klíčů a řetězcové hodnoty, která jsou přístupná buď pomocí klíče nebo indexu. |
|
Představuje kolekci páru klíč/hodnota, které jsou uspořádány na základě hash hodnot klíče nebo indexu. |
|
Představuje kolekci řetězců. |
|
Implementuje hashovou tabulku s klíčem a silně typovou hodnotou, jejíž typ je pravděpodobněji řetězec než objekt. |