NameObjectCollectionBase Třída

Definice

abstract Poskytuje základní třídu pro kolekci přidružených String klíčů a Object hodnot, ke kterým je možné přistupovat pomocí klíče nebo indexu.

public ref class NameObjectCollectionBase abstract : System::Collections::ICollection
public ref class NameObjectCollectionBase abstract : System::Collections::ICollection, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public abstract class NameObjectCollectionBase : System.Collections.ICollection
public abstract class NameObjectCollectionBase : System.Collections.ICollection, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
[System.Serializable]
public abstract class NameObjectCollectionBase : System.Collections.ICollection, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
type NameObjectCollectionBase = class
    interface ICollection
    interface IEnumerable
type NameObjectCollectionBase = class
    interface ICollection
    interface IEnumerable
    interface IDeserializationCallback
    interface ISerializable
type NameObjectCollectionBase = class
    interface ICollection
    interface IEnumerable
    interface ISerializable
    interface IDeserializationCallback
[<System.Serializable>]
type NameObjectCollectionBase = class
    interface ICollection
    interface IEnumerable
    interface ISerializable
    interface IDeserializationCallback
Public MustInherit Class NameObjectCollectionBase
Implements ICollection
Public MustInherit Class NameObjectCollectionBase
Implements ICollection, IDeserializationCallback, ISerializable
Dědičnost
NameObjectCollectionBase
Odvozené
Atributy
Implementuje

Příklady

Následující příklad kódu ukazuje, jak implementovat a používat NameObjectCollectionBase třídu.

using System;
using System.Collections;
using System.Collections.Specialized;

public class MyCollection : NameObjectCollectionBase
{
   // Creates an empty collection.
   public MyCollection()  {
   }

   // Adds elements from an IDictionary into the new collection.
   public MyCollection( IDictionary d, Boolean bReadOnly )  {
      foreach ( DictionaryEntry de in d )  {
         this.BaseAdd( (String) de.Key, de.Value );
      }
      this.IsReadOnly = bReadOnly;
   }

   // Gets a key-and-value pair (DictionaryEntry) using an index.
   public DictionaryEntry this[ int index ]  {
      get  {
          return ( new DictionaryEntry(
              this.BaseGetKey(index), this.BaseGet(index) ) );
      }
   }

   // Gets or sets the value associated with the specified key.
   public Object this[ String key ]  {
      get  {
         return( this.BaseGet( key ) );
      }
      set  {
         this.BaseSet( key, value );
      }
   }

   // Gets a String array that contains all the keys in the collection.
   public String[] AllKeys  {
      get  {
         return( this.BaseGetAllKeys() );
      }
   }

   // Gets an Object array that contains all the values in the collection.
   public Array AllValues  {
      get  {
         return( this.BaseGetAllValues() );
      }
   }

   // Gets a String array that contains all the values in the collection.
   public String[] AllStringValues  {
      get  {
         return( (String[]) this.BaseGetAllValues( typeof( string ) ));
      }
   }

   // Gets a value indicating if the collection contains keys that are not null.
   public Boolean HasKeys  {
      get  {
         return( this.BaseHasKeys() );
      }
   }

   // Adds an entry to the collection.
   public void Add( String key, Object value )  {
      this.BaseAdd( key, value );
   }

   // Removes an entry with the specified key from the collection.
   public void Remove( String key )  {
      this.BaseRemove( key );
   }

   // Removes an entry in the specified index from the collection.
   public void Remove( int index )  {
      this.BaseRemoveAt( index );
   }

   // Clears all the elements in the collection.
   public void Clear()  {
      this.BaseClear();
   }
}

public class SamplesNameObjectCollectionBase  {

   public static void Main()  {

      // Creates and initializes a new MyCollection that is read-only.
      IDictionary d = new ListDictionary();
      d.Add( "red", "apple" );
      d.Add( "yellow", "banana" );
      d.Add( "green", "pear" );
      MyCollection myROCol = new MyCollection( d, true );

      // Tries to add a new item.
      try  {
         myROCol.Add( "blue", "sky" );
      }
      catch ( NotSupportedException e )  {
         Console.WriteLine( e.ToString() );
      }

      // Displays the keys and values of the MyCollection.
      Console.WriteLine( "Read-Only Collection:" );
      PrintKeysAndValues( myROCol );

      // Creates and initializes an empty MyCollection that is writable.
      MyCollection myRWCol = new MyCollection();

      // Adds new items to the collection.
      myRWCol.Add( "purple", "grape" );
      myRWCol.Add( "orange", "tangerine" );
      myRWCol.Add( "black", "berries" );
      Console.WriteLine( "Writable Collection (after adding values):" );
      PrintKeysAndValues( myRWCol );

      // Changes the value of one element.
      myRWCol["orange"] = "grapefruit";
      Console.WriteLine( "Writable Collection (after changing one value):" );
      PrintKeysAndValues( myRWCol );

      // Removes one item from the collection.
      myRWCol.Remove( "black" );
      Console.WriteLine( "Writable Collection (after removing one value):" );
      PrintKeysAndValues( myRWCol );

      // Removes all elements from the collection.
      myRWCol.Clear();
      Console.WriteLine( "Writable Collection (after clearing the collection):" );
      PrintKeysAndValues( myRWCol );
   }

   // Prints the indexes, keys, and values.
   public static void PrintKeysAndValues( MyCollection myCol )  {
      for ( int i = 0; i < myCol.Count; i++ )  {
         Console.WriteLine( "[{0}] : {1}, {2}", i, myCol[i].Key, myCol[i].Value );
      }
   }

   // Prints the keys and values using AllKeys.
   public static void PrintKeysAndValues2( MyCollection myCol )  {
      foreach ( String s in myCol.AllKeys )  {
         Console.WriteLine( "{0}, {1}", s, myCol[s] );
      }
   }
}


/*
This code produces the following output.

System.NotSupportedException: Collection is read-only.
   at System.Collections.Specialized.NameObjectCollectionBase.BaseAdd(String name, Object value)
   at SamplesNameObjectCollectionBase.Main()
Read-Only Collection:
[0] : red, apple
[1] : yellow, banana
[2] : green, pear
Writable Collection (after adding values):
[0] : purple, grape
[1] : orange, tangerine
[2] : black, berries
Writable Collection (after changing one value):
[0] : purple, grape
[1] : orange, grapefruit
[2] : black, berries
Writable Collection (after removing one value):
[0] : purple, grape
[1] : orange, grapefruit
Writable Collection (after clearing the collection):

*/
Imports System.Collections
Imports System.Collections.Specialized

Public Class MyCollection
   Inherits NameObjectCollectionBase

   ' Creates an empty collection.
   Public Sub New()
   End Sub

   ' Adds elements from an IDictionary into the new collection.
   Public Sub New(d As IDictionary, bReadOnly As Boolean)
      Dim de As DictionaryEntry
      For Each de In  d
         Me.BaseAdd(CType(de.Key, String), de.Value)
      Next de
      Me.IsReadOnly = bReadOnly
   End Sub

   ' Gets a key-and-value pair (DictionaryEntry) using an index.
   Default Public ReadOnly Property Item(index As Integer) As DictionaryEntry
      Get
            return new DictionaryEntry( _
                me.BaseGetKey(index), me.BaseGet(index) )
      End Get
   End Property

   ' Gets or sets the value associated with the specified key.
   Default Public Property Item(key As String) As Object
      Get
         Return Me.BaseGet(key)
      End Get
      Set
         Me.BaseSet(key, value)
      End Set
   End Property

   ' Gets a String array that contains all the keys in the collection.
   Public ReadOnly Property AllKeys() As String()
      Get
         Return Me.BaseGetAllKeys()
      End Get
   End Property

   ' Gets an Object array that contains all the values in the collection.
   Public ReadOnly Property AllValues() As Array
      Get
         Return Me.BaseGetAllValues()
      End Get
   End Property

   ' Gets a String array that contains all the values in the collection.
   Public ReadOnly Property AllStringValues() As String()
      Get
         Return CType(Me.BaseGetAllValues(GetType(String)), String())
      End Get
   End Property

   ' Gets a value indicating if the collection contains keys that are not null.
   Public ReadOnly Property HasKeys() As Boolean
      Get
         Return Me.BaseHasKeys()
      End Get
   End Property

   ' Adds an entry to the collection.
   Public Sub Add(key As String, value As Object)
      Me.BaseAdd(key, value)
   End Sub

   ' Removes an entry with the specified key from the collection.
   Overloads Public Sub Remove(key As String)
      Me.BaseRemove(key)
   End Sub

   ' Removes an entry in the specified index from the collection.
   Overloads Public Sub Remove(index As Integer)
      Me.BaseRemoveAt(index)
   End Sub

   ' Clears all the elements in the collection.
   Public Sub Clear()
      Me.BaseClear()
   End Sub

End Class


Public Class SamplesNameObjectCollectionBase   

   Public Shared Sub Main()

      ' Creates and initializes a new MyCollection that is read-only.
      Dim d As New ListDictionary()
      d.Add("red", "apple")
      d.Add("yellow", "banana")
      d.Add("green", "pear")
      Dim myROCol As New MyCollection(d, True)

      ' Tries to add a new item.
      Try
         myROCol.Add("blue", "sky")
      Catch e As NotSupportedException
         Console.WriteLine(e.ToString())
      End Try

      ' Displays the keys and values of the MyCollection.
      Console.WriteLine("Read-Only Collection:")
      PrintKeysAndValues(myROCol)

      ' Creates and initializes an empty MyCollection that is writable.
      Dim myRWCol As New MyCollection()

      ' Adds new items to the collection.
      myRWCol.Add("purple", "grape")
      myRWCol.Add("orange", "tangerine")
      myRWCol.Add("black", "berries")
      Console.WriteLine("Writable Collection (after adding values):")
      PrintKeysAndValues(myRWCol)

      ' Changes the value of one element.
      myRWCol("orange") = "grapefruit"
      Console.WriteLine("Writable Collection (after changing one value):")
      PrintKeysAndValues(myRWCol)

      ' Removes one item from the collection.
      myRWCol.Remove("black")
      Console.WriteLine("Writable Collection (after removing one value):")
      PrintKeysAndValues(myRWCol)

      ' Removes all elements from the collection.
      myRWCol.Clear()
      Console.WriteLine("Writable Collection (after clearing the collection):")
      PrintKeysAndValues(myRWCol)

   End Sub

   ' Prints the indexes, keys, and values.
   Public Shared Sub PrintKeysAndValues(myCol As MyCollection)
      Dim i As Integer
      For i = 0 To myCol.Count - 1
         Console.WriteLine("[{0}] : {1}, {2}", i, myCol(i).Key, myCol(i).Value)
      Next i
   End Sub

   ' Prints the keys and values using AllKeys.
   Public Shared Sub PrintKeysAndValues2(myCol As MyCollection)
      Dim s As String
      For Each s In  myCol.AllKeys
         Console.WriteLine("{0}, {1}", s, myCol(s))
      Next s
   End Sub

End Class


'This code produces the following output.
'
'System.NotSupportedException: Collection is read-only.
'   at System.Collections.Specialized.NameObjectCollectionBase.BaseAdd(String name, Object value)
'   at SamplesNameObjectCollectionBase.Main()
'Read-Only Collection:
'[0] : red, apple
'[1] : yellow, banana
'[2] : green, pear
'Writable Collection (after adding values):
'[0] : purple, grape
'[1] : orange, tangerine
'[2] : black, berries
'Writable Collection (after changing one value):
'[0] : purple, grape
'[1] : orange, grapefruit
'[2] : black, berries
'Writable Collection (after removing one value):
'[0] : purple, grape
'[1] : orange, grapefruit
'Writable Collection (after clearing the collection):

Poznámky

Základní struktura této třídy je hashovací tabulka.

Každý prvek je pár klíč/hodnota.

Kapacita je NameObjectCollectionBase počet prvků, které NameObjectCollectionBase může obsahovat. S tím, jak jsou prvky přidány do NameObjectCollectionBase, kapacita se automaticky zvýší podle potřeby prostřednictvím reallocation.

Zprostředkovatel kódu hash vydává kód hash pro klíče v NameObjectCollectionBase instanci. Výchozí zprostředkovatel kódu hash je CaseInsensitiveHashCodeProvider.

Porovnávač určuje, zda jsou dva klíče stejné. Výchozí porovnávač je CaseInsensitiveComparer.

V .NET Framework verze 1.0 tato třída používá porovnání řetězců citlivých na jazykovou verzi. V .NET Framework verze 1.1 a novější však tato třída používá při porovnávání řetězců CultureInfo.InvariantCulture. Další informace o tom, jak jazyková verze ovlivňuje porovnání a řazení, naleznete v tématu Provádění Culture-Insensitive řetězcových operací.

null je povolený jako klíč nebo jako hodnota.

Caution

Metoda BaseGet nerozlišuje mezi null vráceným klíčem, protože zadaný klíč nebyl nalezen a null je vrácen, protože hodnota přidružená ke klíči je null.

Konstruktory

Name Description
NameObjectCollectionBase()

Inicializuje novou instanci NameObjectCollectionBase třídy, která je prázdná.

NameObjectCollectionBase(IEqualityComparer)

Inicializuje novou instanci NameObjectCollectionBase třídy, která je prázdná, má výchozí počáteční kapacitu a používá zadaný IEqualityComparer objekt.

NameObjectCollectionBase(IHashCodeProvider, IComparer)
Zastaralé.
Zastaralé.

Inicializuje novou instanci NameObjectCollectionBase třídy, která je prázdná, má výchozí počáteční kapacitu a používá zadaného zprostředkovatele hash kódu a zadaný porovnávač.

NameObjectCollectionBase(Int32, IEqualityComparer)

Inicializuje novou instanci NameObjectCollectionBase třídy, která je prázdná, má zadanou počáteční kapacitu a používá zadaný IEqualityComparer objekt.

NameObjectCollectionBase(Int32, IHashCodeProvider, IComparer)
Zastaralé.
Zastaralé.

Inicializuje novou instanci NameObjectCollectionBase třídy, která je prázdná, má zadanou počáteční kapacitu a používá zadaného zprostředkovatele hash kódu a zadaný porovnávač.

NameObjectCollectionBase(Int32)

Inicializuje novou instanci NameObjectCollectionBase třídy, která je prázdná, má zadanou počáteční kapacitu a používá výchozího zprostředkovatele hash kódu a výchozí porovnávač.

NameObjectCollectionBase(SerializationInfo, StreamingContext)
Zastaralé.

Inicializuje novou instanci NameObjectCollectionBase třídy, která je serializovatelná a používá zadaný SerializationInfo a StreamingContext.

Vlastnosti

Name Description
Count

Získá počet párů klíč/hodnota obsažených NameObjectCollectionBase v instanci.

IsReadOnly

Získá nebo nastaví hodnotu určující, zda NameObjectCollectionBase instance je jen pro čtení.

Keys

Získá NameObjectCollectionBase.KeysCollection instanci, která obsahuje všechny klíče v NameObjectCollectionBase instanci.

Metody

Name Description
BaseAdd(String, Object)

Přidá položku se zadaným klíčem a hodnotou do NameObjectCollectionBase instance.

BaseClear()

Odebere všechny položky z NameObjectCollectionBase instance.

BaseGet(Int32)

Získá hodnotu položky v zadaném indexu NameObjectCollectionBase instance.

BaseGet(String)

Získá hodnotu první položky se zadaným klíčem z NameObjectCollectionBase instance.

BaseGetAllKeys()

String Vrátí pole, které obsahuje všechny klíče v NameObjectCollectionBase instanci.

BaseGetAllValues()

Object Vrátí pole, které obsahuje všechny hodnoty v NameObjectCollectionBase instanci.

BaseGetAllValues(Type)

Vrátí pole zadaného typu, které obsahuje všechny hodnoty v NameObjectCollectionBase instanci.

BaseGetKey(Int32)

Získá klíč položky v zadaném indexu NameObjectCollectionBase instance.

BaseHasKeys()

Získá hodnotu určující, zda NameObjectCollectionBase instance obsahuje položky, jejichž klíče nejsou null.

BaseRemove(String)

Odebere položky se zadaným klíčem z NameObjectCollectionBase instance.

BaseRemoveAt(Int32)

Odebere položku v zadaném indexu NameObjectCollectionBase instance.

BaseSet(Int32, Object)

Nastaví hodnotu položky na zadaném indexu NameObjectCollectionBase instance.

BaseSet(String, Object)

Nastaví hodnotu první položky se zadaným klíčem v NameObjectCollectionBase instanci, pokud je nalezena; v opačném případě přidá položku se zadaným klíčem a hodnotou do NameObjectCollectionBase instance.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetEnumerator()

Vrátí enumerátor, který iteruje přes NameObjectCollectionBase.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetObjectData(SerializationInfo, StreamingContext)
Zastaralé.

Implementuje ISerializable rozhraní a vrací data potřebná k serializaci NameObjectCollectionBase instance.

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)
OnDeserialization(Object)

Implementuje ISerializable rozhraní a vyvolá deserializační událost po dokončení deserializace.

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 celý NameObjectCollectionBase soubor do kompatibilního jednorozměrného Array, počínaje zadaným indexem cílového pole.

ICollection.IsSynchronized

Získá hodnotu označující, zda je přístup k objektu NameObjectCollectionBase synchronizován (bezpečné vlákno).

ICollection.SyncRoot

Získá objekt, který lze použít k synchronizaci přístupu k objektu NameObjectCollectionBase .

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.

Platí pro

Bezpečný přístup z více vláken

Veřejné statické členy tohoto typu (Shared v jazyce Visual Basic) jsou bezpečné pro přístup z více vláken. U žádného člena instance není zaručena bezpečnost pro přístup z více vláken.

Tato implementace neposkytuje synchronizovaný obálka (thread safe) pro , NameObjectCollectionBaseale odvozené třídy mohou vytvořit své vlastní synchronizované verze NameObjectCollectionBase pomocí SyncRoot vlastnosti.

Výčet prostřednictvím kolekce není vnitřně bezpečným postupem vlákna. 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, můžete buď uzamknout kolekci během celého výčtu, nebo zachytit výjimky vyplývající z změn provedených jinými vlákny.

Viz také