Collection Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Visual Basic Collection je uspořádaná sada položek, které lze řadit jako jednotku.
public ref class Collection sealed : System::Collections::IList
public ref class Collection sealed : System::Collections::IList, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public sealed class Collection : System.Collections.IList
[System.Serializable]
public sealed class Collection : System.Collections.IList, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type Collection = class
interface ICollection
interface IEnumerable
interface IList
type Collection = class
interface ICollection
interface IList
[<System.Serializable>]
type Collection = class
interface ICollection
interface IList
interface ISerializable
interface IDeserializationCallback
Public NotInheritable Class Collection
Implements IList
Public NotInheritable Class Collection
Implements IDeserializationCallback, IList, ISerializable
- Dědičnost
-
Collection
- Atributy
- Implementuje
Příklady
Následující příklad vytvoří Collection objekt names a dialogové okno, se kterým může uživatel přidat objekty (názvy) do kolekce. Pak zobrazí názvy v kolekci a nakonec vyprázdní kolekci, aniž by se oddělil Collection samotný objekt.
Pokud chcete zjistit, jak to funguje, zvolte příkaz Přidat třídu z nabídky Projektu a deklarujte veřejnou proměnnou volanou instanceName na úrovni nameClass modulu (typu Public instanceName) pro uložení názvů jednotlivých instancí. Ponechte výchozí název jako nameClass. Zkopírujte následující kód a vložte ho do části Obecné jiného modulu a pak ho classNamer spusťte příkazem v jiné proceduře. (Tento příklad funguje jenom s hostitelskými aplikacemi, které podporují třídy.)
Public Class nameClass
Public instanceName As String
End Class
Sub classNamer()
' Create a Visual Basic Collection object.
Dim names As New Microsoft.VisualBasic.Collection()
Dim key As Integer
Dim msg As String
Dim name As String
Dim nameList As String = ""
' 1. Get names from the user to add to the collection.
Do
Dim inst As New nameClass()
key += 1
msg = "Please enter a name for this object." & vbCrLf &
"Press Cancel to see names in collection."
name = InputBox(msg, "Name the Collection items")
inst.instanceName = name
' If user entered a name, add it to the collection.
If inst.instanceName <> "" Then
names.Add(inst, CStr(key))
End If
Loop Until name = ""
' 2. Create and display a list of names from the collection.
For Each oneInst As nameClass In names
nameList &= oneInst.instanceName & vbCrLf
Next oneInst
MsgBox(nameList, , "Instance Names in names Collection")
' 3. Remove elements from the collection without disposing of the collection.
For count As Integer = 1 To names.Count
names.Remove(1)
' Since Visual Basic collections are reindexed automatically,
' remove the first member on each iteration.
Next count
End Sub
Poznámky
Poznámka:
Kdykoli je to možné, měli byste místo jazyka Visual Basic Collectionpoužít obecné kolekce v System.Collections.Generic oboru názvů nebo System.Collections.Concurrent oboru názvů . Další informace naleznete v tématu Kolekce – C# nebo Kolekce – Visual Basic.
Objekt Jazyka Visual Basic Collection poskytuje pohodlný způsob, jak odkazovat na související skupinu položek jako jeden objekt. Položky nebo prvky v kolekci musí souviset pouze se skutečností, že v kolekci existují. Prvky kolekce nemusí sdílet stejný datový typ.
Kolekci můžete vytvořit stejným způsobem jako ostatní objekty, jak ukazuje následující příklad.
Dim coll As New Microsoft.VisualBasic.Collection()
Jakmile vytvoříte kolekci, můžete udělat některou z těchto věcí:
Přidejte prvek s metodou Add .
Odeberte prvek pomocí Remove metody.
Odeberte všechny prvky pomocí Clear metody.
Zjistěte, kolik prvků kolekce obsahuje s Count vlastností.
Zkontrolujte, jestli je v metodě k dispozici Contains konkrétní prvek.
Vrátí konkrétní prvek z kolekce s Item[] vlastností.
Iterujte celou kolekci pomocí příkazu For Each... Next – příkaz.
Poznámka:
I když objekt jazyka Visual Basic
Collectionmá funkce identické s objektemCollectionv jazyce Visual Basic 6.0, dva nemohou spolupracovat v prostředí COM.Upozornění
Iterace prostřednictvím jazyka Visual Basic
Collectionnení procedura bezpečná pro přístup z více vláken. I když je kolekce synchronizována, ostatní vlákna mohou stále upravovat kolekci, což způsobí, že enumerátor vyvolá výjimku. Chcete-li zaručit bezpečnost vláken během výčtu, zamkněte kolekci nebo zachyťte výjimky vyplývající z změn provedených jinými vlákny. Další informace o uzamčení programovacího prvku naleznete v tématu SyncLock – příkaz.
Konstruktory
| Name | Description |
|---|---|
| Collection() |
Vytvoří a vrátí nový objekt jazyka Visual Basic Collection . |
Vlastnosti
| Name | Description |
|---|---|
| Count |
Získá počet prvků v kolekci. |
| Item[Int32] |
Získá určitý prvek |
| Item[Object] |
Získá určitý prvek |
| Item[String] |
Získá určitý prvek |
Metody
| Name | Description |
|---|---|
| Add(Object, String, Object, Object) |
Přidá prvek do objektu |
| Clear() |
Odstraní všechny prvky objektu jazyka Visual Basic |
| Contains(String) |
Vrátí hodnotu, která určuje, zda objekt jazyka Visual Basic |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetEnumerator() |
Vrátí enumerátor, který prochází kolekcí. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| Remove(Int32) |
Odebere prvek z objektu |
| Remove(String) |
Odebere prvek z objektu |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Zkopíruje prvky do objektu CollectionArray, počínaje konkrétním Array indexem. |
| ICollection.Count |
Získá počet položek v této kolekci. |
| ICollection.IsSynchronized |
Získá hodnotu, která označuje, zda je přístup k objektu Collection synchronizován (thread-safe). |
| ICollection.SyncRoot |
Získá objekt, který lze použít k synchronizaci přístupu k objektu Collection . |
| IDeserializationCallback.OnDeserialization(Object) |
Spustí se po deserializaci celého Collection grafu objektu. |
| IEnumerable.GetEnumerator() |
Získá enumerátor, který iteruje prostřednictvím kolekce. |
| IList.Add(Object) |
Přidá položku do kolekce. |
| IList.Clear() |
Odebere všechny položky z objektu Collection . |
| IList.Contains(Object) |
Určuje, zda Collection objekt obsahuje konkrétní hodnotu. |
| IList.IndexOf(Object) |
Určuje index konkrétní položky v objektu Collection . |
| IList.Insert(Int32, Object) |
Vloží položku do objektu Collection v zadaném indexu. |
| IList.IsFixedSize |
Získá hodnotu, která určuje, zda Collection objekt má pevnou velikost. |
| IList.IsReadOnly |
Získá hodnotu, která označuje, zda Collection je objekt. |
| IList.Item[Int32] |
Získá nebo nastaví prvek v zadaném indexu. |
| IList.Remove(Object) |
Odebere z objektu první výskyt konkrétního objektu Collection . |
| IList.RemoveAt(Int32) |
Odebere položku objektu Collection v zadaném indexu. |
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
Vrátí data potřebná k serializaci objektu Collection . |
Metody rozšíření
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Umožňuje paralelizaci dotazu. |
| AsQueryable(IEnumerable) |
Převede IEnumerable na IQueryable. |
| Cast<TResult>(IEnumerable) |
Přetypuje prvky IEnumerable na zadaný typ. |
| OfType<TResult>(IEnumerable) |
Filtruje prvky IEnumerable na základě zadaného typu. |