Sdílet prostřednictvím


NameValueCollection Třída

Definice

Představuje kolekci přidružených String klíčů a String hodnot, ke kterým lze přistupovat buď pomocí klíče, nebo pomocí indexu.

public ref class NameValueCollection : System::Collections::Specialized::NameObjectCollectionBase
public class NameValueCollection : System.Collections.Specialized.NameObjectCollectionBase
[System.Serializable]
public class NameValueCollection : System.Collections.Specialized.NameObjectCollectionBase
type NameValueCollection = class
    inherit NameObjectCollectionBase
[<System.Serializable>]
type NameValueCollection = class
    inherit NameObjectCollectionBase
Public Class NameValueCollection
Inherits NameObjectCollectionBase
Dědičnost
NameValueCollection
Odvozené
Atributy

Příklady

#using <System.dll>

using namespace System;
using namespace System::Collections;
using namespace System::Collections::Specialized;

void PrintKeysAndValues( NameValueCollection^ myCol );
void PrintKeysAndValues2( NameValueCollection^ myCol );

int main()
{
   // Creates and initializes a new NameValueCollection.
   NameValueCollection^ myCol = gcnew NameValueCollection;
   myCol->Add( "red", "rojo" );
   myCol->Add( "green", "verde" );
   myCol->Add( "blue", "azul" );
   myCol->Add( "red", "rouge" );

   // Displays the values in the NameValueCollection in two different ways.
   Console::WriteLine( "Displays the elements using the AllKeys property and the Item (indexer) property:" );
   PrintKeysAndValues( myCol );
   Console::WriteLine( "Displays the elements using GetKey and Get:" );
   PrintKeysAndValues2( myCol );

   // Gets a value either by index or by key.
   Console::WriteLine( "Index 1 contains the value {0}.", myCol[ 1 ] );
   Console::WriteLine( "Key \"red\" has the value {0}.", myCol[ "red" ] );
   Console::WriteLine();

   // Copies the values to a string array and displays the string array.
   array<String^>^myStrArr = gcnew array<String^>(myCol->Count);
   myCol->CopyTo( myStrArr, 0 );
   Console::WriteLine( "The string array contains:" );
   for each ( String^ s in myStrArr )
      Console::WriteLine( "   {0}", s );
   Console::WriteLine();

   // Searches for a key and deletes it.
   myCol->Remove( "green" );
   Console::WriteLine( "The collection contains the following elements after removing \"green\":" );
   PrintKeysAndValues( myCol );

   // Clears the entire collection.
   myCol->Clear();
   Console::WriteLine( "The collection contains the following elements after it is cleared:" );
   PrintKeysAndValues( myCol );
}

void PrintKeysAndValues( NameValueCollection^ myCol )
{
   Console::WriteLine( "   KEY        VALUE" );
   for each ( String^ s in myCol->AllKeys )
      Console::WriteLine( "   {0,-10} {1}", s, myCol[s] );
   Console::WriteLine();
}

void PrintKeysAndValues2( NameValueCollection^ myCol )
{
   Console::WriteLine( "   [INDEX] KEY        VALUE" );
   for ( int i = 0; i < myCol->Count; i++ )
      Console::WriteLine( "   [{0}]     {1,-10} {2}", i, myCol->GetKey( i ), myCol->Get( i ) );
   Console::WriteLine();
}

/*

This code produces the following output.

Displays the elements using the AllKeys property and the Item (indexer) property:
   KEY        VALUE
   red        rojo,rouge
   green      verde
   blue       azul

Displays the elements using GetKey and Get:
   [INDEX] KEY        VALUE
   [0]     red        rojo,rouge
   [1]     green      verde
   [2]     blue       azul

Index 1 contains the value verde.
Key "red" has the value rojo,rouge.

The string array contains:
   rojo,rouge
   verde
   azul

The collection contains the following elements after removing "green":
   KEY        VALUE
   red        rojo,rouge
   blue       azul

The collection contains the following elements after it is cleared:
   KEY        VALUE


*/
using System;
using System.Collections;
using System.Collections.Specialized;

public class SamplesNameValueCollection  {

   public static void Main()  {

      // Creates and initializes a new NameValueCollection.
      NameValueCollection myCol = new NameValueCollection();
      myCol.Add( "red", "rojo" );
      myCol.Add( "green", "verde" );
      myCol.Add( "blue", "azul" );
      myCol.Add( "red", "rouge" );

      // Displays the values in the NameValueCollection in two different ways.
      Console.WriteLine( "Displays the elements using the AllKeys property and the Item (indexer) property:" );
      PrintKeysAndValues( myCol );
      Console.WriteLine( "Displays the elements using GetKey and Get:" );
      PrintKeysAndValues2( myCol );

      // Gets a value either by index or by key.
      Console.WriteLine( "Index 1 contains the value {0}.", myCol[1] );
      Console.WriteLine( "Key \"red\" has the value {0}.", myCol["red"] );
      Console.WriteLine();

      // Copies the values to a string array and displays the string array.
      String[] myStrArr = new String[myCol.Count];
      myCol.CopyTo( myStrArr, 0 );
      Console.WriteLine( "The string array contains:" );
      foreach ( String s in myStrArr )
         Console.WriteLine( "   {0}", s );
      Console.WriteLine();

      // Searches for a key and deletes it.
      myCol.Remove( "green" );
      Console.WriteLine( "The collection contains the following elements after removing \"green\":" );
      PrintKeysAndValues( myCol );

      // Clears the entire collection.
      myCol.Clear();
      Console.WriteLine( "The collection contains the following elements after it is cleared:" );
      PrintKeysAndValues( myCol );
   }

   public static void PrintKeysAndValues( NameValueCollection myCol )  {
      Console.WriteLine( "   KEY        VALUE" );
      foreach ( String s in myCol.AllKeys )
         Console.WriteLine( "   {0,-10} {1}", s, myCol[s] );
      Console.WriteLine();
   }

   public static void PrintKeysAndValues2( NameValueCollection myCol )  {
      Console.WriteLine( "   [INDEX] KEY        VALUE" );
      for ( int i = 0; i < myCol.Count; i++ )
         Console.WriteLine( "   [{0}]     {1,-10} {2}", i, myCol.GetKey(i), myCol.Get(i) );
      Console.WriteLine();
   }
}

/*

This code produces the following output.

Displays the elements using the AllKeys property and the Item (indexer) property:
   KEY        VALUE
   red        rojo,rouge
   green      verde
   blue       azul

Displays the elements using GetKey and Get:
   [INDEX] KEY        VALUE
   [0]     red        rojo,rouge
   [1]     green      verde
   [2]     blue       azul

Index 1 contains the value verde.
Key "red" has the value rojo,rouge.

The string array contains:
   rojo,rouge
   verde
   azul

The collection contains the following elements after removing "green":
   KEY        VALUE
   red        rojo,rouge
   blue       azul

The collection contains the following elements after it is cleared:
   KEY        VALUE


*/
' The following code example demonstrates several of the properties and methods of ListDictionary.

Imports System.Collections
Imports System.Collections.Specialized


Public Class SamplesNameValueCollection

    Public Shared Sub Main()

        ' Creates and initializes a new NameValueCollection.
        Dim myCol As New NameValueCollection()
        myCol.Add("red", "rojo")
        myCol.Add("green", "verde")
        myCol.Add("blue", "azul")
        myCol.Add("red", "rouge")

        ' Displays the values in the NameValueCollection in two different ways.
        Console.WriteLine("Displays the elements using the AllKeys property and the Item (indexer) property:")
        PrintKeysAndValues(myCol)
        Console.WriteLine("Displays the elements using GetKey and Get:")
        PrintKeysAndValues2(myCol)

        ' Gets a value either by index or by key.
        Console.WriteLine("Index 1 contains the value {0}.", myCol(1))
        Console.WriteLine("Key ""red"" has the value {0}.", myCol("red"))
        Console.WriteLine()

        ' Copies the values to a string array and displays the string array.
        Dim myStrArr(myCol.Count) As String
        myCol.CopyTo(myStrArr, 0)
        Console.WriteLine("The string array contains:")
        Dim s As String
        For Each s In myStrArr
            Console.WriteLine("   {0}", s)
        Next s
        Console.WriteLine()

        ' Searches for a key and deletes it.
        myCol.Remove("green")
        Console.WriteLine("The collection contains the following elements after removing ""green"":")
        PrintKeysAndValues(myCol)

        ' Clears the entire collection.
        myCol.Clear()
        Console.WriteLine("The collection contains the following elements after it is cleared:")
        PrintKeysAndValues(myCol)

    End Sub

    Public Shared Sub PrintKeysAndValues(myCol As NameValueCollection)
        Console.WriteLine("   KEY        VALUE")
        Dim s As String
        For Each s In  myCol.AllKeys
            Console.WriteLine("   {0,-10} {1}", s, myCol(s))
        Next s
        Console.WriteLine()
    End Sub

    Public Shared Sub PrintKeysAndValues2(myCol As NameValueCollection)
        Console.WriteLine("   [INDEX] KEY        VALUE")
        Dim i As Integer
        For i = 0 To myCol.Count - 1
            Console.WriteLine("   [{0}]     {1,-10} {2}", i, myCol.GetKey(i), myCol.Get(i))
        Next i
        Console.WriteLine()
    End Sub

End Class


'This code produces the following output.
'
'Displays the elements using the AllKeys property and the Item (indexer) property:
'   KEY        VALUE
'   red        rojo,rouge
'   green      verde
'   blue       azul
'
'Displays the elements using GetKey and Get:
'   [INDEX] KEY        VALUE
'   [0]     red        rojo,rouge
'   [1]     green      verde
'   [2]     blue       azul
'
'Index 1 contains the value verde.
'Key "red" has the value rojo,rouge.
'
'The string array contains:
'   red
'   green
'   blue
'
'
'The collection contains the following elements after removing "green":
'   KEY        VALUE
'   red        rojo,rouge
'   blue       azul
'
'The collection contains the following elements after it is cleared:
'   KEY        VALUE
'
'

Poznámky

Tato kolekce je založená na NameObjectCollectionBase třídě . Každý prvek kolekce je pár klíč-hodnota. Na rozdíl od NameObjectCollectionBasevšak může tato třída uložit více řetězcových hodnot pod jedním klíčem.

Tuto třídu lze použít pro hlavičky, řetězce dotazů a data formulářů.

Kolekce tohoto typu nezachovávají pořadí prvků a při vytváření výčtu kolekce není zaručeno žádné zvláštní řazení.

Kapacita objektu NameValueCollection je počet prvků, které NameValueCollection může obsahovat. Při přidání prvků se jejich kapacita automaticky zvýší podle potřeby prostřednictvím přerozdělení.

Zprostředkovatel hash kódu rozděluje hash kódy pro klíče v .NameValueCollection Výchozí zprostředkovatel hash kódu je CaseInsensitiveHashCodeProvider.

Porovnávač určuje, jestli jsou dva klíče stejné. Výchozí porovnávací nástroj je, CaseInsensitiveComparer který používá konvence invariantní jazykové verze; to znamená, že klíčová porovnání ve výchozím nastavení nerozlišují malá a velká písmena. Chcete-li provést porovnání klíčů s rozlišováním velkých a malých písmen, zavolejte NameValueCollection.NameValueCollection(IEqualityComparer) konstruktor a jako equalityComparer argument zadejte hodnotu StringComparer.CurrentCulture, StringComparer.InvariantCulturenebo StringComparer.Ordinal . Další informace o tom, jak jazyková verze ovlivňuje porovnání a řazení, najdete v tématu Provádění operací s řetězci Culture-Insensitive.

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

Upozornění

Metoda Get nerozlišuje, null který klíč se vrátí, protože zadaný klíč nebyl nalezen, a null který se vrátí, protože hodnota přidružená ke klíči je null.

Konstruktory

NameValueCollection()

Inicializuje novou instanci NameValueCollection třídy, která je prázdná, má výchozí počáteční kapacitu a používá výchozího zprostředkovatele hash kódu nerozlišující malá a velká písmena a výchozí porovnávač.

NameValueCollection(IEqualityComparer)

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

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

Inicializuje novou instanci NameValueCollection 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č.

NameValueCollection(Int32)

Inicializuje novou instanci NameValueCollection třídy, která je prázdná, má zadanou počáteční kapacitu a používá výchozího zprostředkovatele hash kódu nerozlišující malá a velká písmena a výchozí porovnávač.

NameValueCollection(Int32, IEqualityComparer)

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

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

Inicializuje novou instanci NameValueCollection 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č.

NameValueCollection(Int32, NameValueCollection)

Zkopíruje položky ze zadané NameValueCollection hodnoty do nového NameValueCollection se zadanou počáteční kapacitou nebo se stejnou počáteční kapacitou jako počet zkopírovaných položek podle toho, která hodnota je větší, a použije výchozího zprostředkovatele hash kódu bez rozlišování malých a velkých písmen a výchozího porovnávače nerozlišující malá a velká písmena.

NameValueCollection(NameValueCollection)

Zkopíruje položky ze zadaného NameValueCollection do nového NameValueCollection se stejnou počáteční kapacitou jako počet zkopírovaných položek a pomocí stejného zprostředkovatele hash kódu a stejného porovnávače jako zdrojová kolekce.

NameValueCollection(SerializationInfo, StreamingContext)
Zastaralé.

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

Vlastnosti

AllKeys

Získá všechny klíče v .NameValueCollection

Count

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

(Zděděno od NameObjectCollectionBase)
IsReadOnly

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

(Zděděno od NameObjectCollectionBase)
Item[Int32]

Získá položku v zadaném indexu .NameValueCollection

Item[String]

Získá nebo nastaví položku se zadaným klíčem v objektu NameValueCollection.

Keys

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

(Zděděno od NameObjectCollectionBase)

Metody

Add(NameValueCollection)

Zkopíruje položky v zadaném NameValueCollection souboru do aktuálního NameValueCollection.

Add(String, String)

Přidá položku se zadaným názvem a hodnotou do objektu NameValueCollection.

BaseAdd(String, Object)

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

(Zděděno od NameObjectCollectionBase)
BaseClear()

Odebere všechny položky z NameObjectCollectionBase instance.

(Zděděno od NameObjectCollectionBase)
BaseGet(Int32)

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

(Zděděno od NameObjectCollectionBase)
BaseGet(String)

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

(Zděděno od NameObjectCollectionBase)
BaseGetAllKeys()

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

(Zděděno od NameObjectCollectionBase)
BaseGetAllValues()

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

(Zděděno od NameObjectCollectionBase)
BaseGetAllValues(Type)

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

(Zděděno od NameObjectCollectionBase)
BaseGetKey(Int32)

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

(Zděděno od NameObjectCollectionBase)
BaseHasKeys()

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

(Zděděno od NameObjectCollectionBase)
BaseRemove(String)

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

(Zděděno od NameObjectCollectionBase)
BaseRemoveAt(Int32)

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

(Zděděno od NameObjectCollectionBase)
BaseSet(Int32, Object)

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

(Zděděno od NameObjectCollectionBase)
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.

(Zděděno od NameObjectCollectionBase)
Clear()

Zruší platnost polí uložených v mezipaměti a odebere všechny položky z objektu NameValueCollection.

CopyTo(Array, Int32)

Zkopíruje celek NameValueCollection do kompatibilního jednorozměrného Arrayobjektu počínaje zadaným indexem cílového pole.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
Get(Int32)

Získá hodnoty v zadaném indexu NameValueCollection zkombinované do jednoho seznamu odděleného čárkami.

Get(String)

Získá hodnoty přidružené k zadanému klíči NameValueCollection z kombinované do jednoho seznamu odděleného čárkami.

GetEnumerator()

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

(Zděděno od NameObjectCollectionBase)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetKey(Int32)

Získá klíč v zadaném indexu NameValueCollection.

GetObjectData(SerializationInfo, StreamingContext)
Zastaralé.

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

(Zděděno od NameObjectCollectionBase)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
GetValues(Int32)

Získá hodnoty v zadaném indexu NameValueCollection.

GetValues(String)

Získá hodnoty přidružené k zadanému klíči z .NameValueCollection

HasKeys()

Získá hodnotu označující, zda NameValueCollection obsahuje klíče, které nejsou null.

InvalidateCachedArrays()

Obnoví pole kolekce uložená v mezipaměti na null.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

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

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

(Zděděno od NameObjectCollectionBase)
Remove(String)

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

Set(String, String)

Nastaví hodnotu položky v .NameValueCollection

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

ICollection.CopyTo(Array, Int32)

Zkopíruje celek NameObjectCollectionBase do kompatibilního jednorozměrného Arrayobjektu počínaje zadaným indexem cílového pole.

(Zděděno od NameObjectCollectionBase)
ICollection.IsSynchronized

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

(Zděděno od NameObjectCollectionBase)
ICollection.SyncRoot

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

(Zděděno od NameObjectCollectionBase)

Metody rozšíření

Cast<TResult>(IEnumerable)

Přetypuje prvky objektu na IEnumerable zadaný typ.

OfType<TResult>(IEnumerable)

Filtruje prvky objektu IEnumerable na základě zadaného typu.

AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede objekt na IEnumerableIQueryable.

Platí pro

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

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

Tato implementace neposkytuje synchronizovanou obálku (bez vláken) pro NameValueCollection, ale odvozené třídy mohou vytvořit své vlastní synchronizované verze NameValueCollection pomocí SyncRoot vlastnosti NameObjectCollectionBase třídy .

Vytvoření výčtu prostřednictvím kolekce není vnitřně procedurou bezpečnou pro přístup z více vláken. I v případě, že jde o synchronizovanou kolekci, mohou úpravy provádět i ostatní vlákna, což způsobuje vyvolání výjimky enumerátorem. K zaručení bezpečnosti přístupu z více vláken můžete buďto zamknout kolekci na celou dobu práce s výčtem, nebo zachycovat výjimky vzniklé v důsledku změn prováděných ostatními vlákny.

Viz také