Freigeben über


NameValueCollection Klasse

Definition

Stellt eine Auflistung einander zugeordneter String-Schlüssel und String-Werte dar, auf die entweder über den Schlüssel oder über den Index zugegriffen werden kann.

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
Vererbung
NameValueCollection
Abgeleitet
Attribute

Beispiele

#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
'
'

Hinweise

Diese Auflistung basiert auf der NameObjectCollectionBase -Klasse. Jedes Element der Auflistung ist ein Schlüssel-Wert-Paar. Im Gegensatz zu der NameObjectCollectionBasekann diese Klasse jedoch mehrere Zeichenfolgenwerte unter einem einzigen Schlüssel speichern.

Diese Klasse kann für Header, Abfragezeichenfolgen und Formulardaten verwendet werden.

Sammlungen dieses Typs behalten die Reihenfolge der Elemente nicht bei, und beim Auflisten der Auflistung ist keine bestimmte Reihenfolge garantiert.

Die Kapazität eines NameValueCollection ist die Anzahl der Elemente, die enthalten NameValueCollection können. Wenn Elemente hinzugefügt werden, wird die Kapazität automatisch bei Bedarf durch Neuzuweisung erhöht.

Der Hashcodeanbieter gibt Hashcodes für Schlüssel in aus NameValueCollection. Der Standard-Hashcodeanbieter ist der CaseInsensitiveHashCodeProvider.

Der Vergleich bestimmt, ob zwei Schlüssel gleich sind. Der Standardvergleich ist ein CaseInsensitiveComparer , der die Konventionen der invariante Kultur verwendet. Das heißt, bei Schlüsselvergleichen wird standardmäßig die Groß-/Kleinschreibung nicht beachtet. Rufen Sie zum Durchführen von Schlüsselvergleichen die NameValueCollection.NameValueCollection(IEqualityComparer) Groß-/Kleinschreibung auf, und geben Sie den Wert StringComparer.CurrentCulture, StringComparer.InvariantCultureoder StringComparer.Ordinal als equalityComparer Argument an. Weitere Informationen dazu, wie sich Kultur auf Vergleiche und Sortierung auswirkt, finden Sie unter Ausführen Culture-Insensitive Zeichenfolgenvorgänge.

null ist als Schlüssel oder als Wert zulässig.

Achtung

Die Get -Methode unterscheidet nicht zwischen null den zurückgegebenen Werten, da der angegebene Schlüssel nicht gefunden und null zurückgegeben wird, weil der dem Schlüssel zugeordnete Wert ist null.

Konstruktoren

NameValueCollection()

Initialisiert eine neue, leere Instanz der NameValueCollection-Klasse mit der anfänglichen Standardkapazität, wobei der Hashcode-Standardanbieter und die Standardvergleichsfunktion (Standardcomparer) verwendet werden, die beide die Groß- und Kleinschreibung nicht berücksichtigen.

NameValueCollection(IEqualityComparer)

Initialisiert eine neue, leere Instanz der NameValueCollection-Klasse mit der anfänglichen Standardkapazität und dem angegebenen IEqualityComparer-Objekt.

NameValueCollection(IHashCodeProvider, IComparer)
Veraltet.
Veraltet.

Initialisiert eine neue, leere Instanz der NameValueCollection-Klasse mit der standardmäßigen Anfangskapazität, wobei der angegebene Hashcodeanbieter und Comparer verwendet werden.

NameValueCollection(Int32)

Initialisiert eine neue, leere Instanz der NameValueCollection-Klasse mit der angegebenen Anfangskapazität, wobei der Hashcode-Standardanbieter und der Standardcomparer verwendet werden, die beide die Groß- und Kleinschreibung nicht berücksichtigen.

NameValueCollection(Int32, IEqualityComparer)

Initialisiert eine neue, leere Instanz der NameValueCollection-Klasse mit der angegebenen Anfangskapazität und dem angegebenen IEqualityComparer-Objekt.

NameValueCollection(Int32, IHashCodeProvider, IComparer)
Veraltet.
Veraltet.

Initialisiert eine neue, leere Instanz der NameValueCollection-Klasse mit der angegebenen Anfangskapazität, wobei der angegebene Hashcodeanbieter und Comparer verwendet werden.

NameValueCollection(Int32, NameValueCollection)

Kopiert die Einträge aus dem angegebenen NameValueCollection-Objekt in ein neues NameValueCollection-Objekt mit der angegebenen Anfangskapazität bzw. mit einer Anfangskapazität, die der Anzahl der kopierten Einträge entspricht, je nachdem, welche größer ist. Es werden der Hashcode-Standardanbieter und der Standardcomparer verwendet, die die Groß- und Kleinschreibung nicht berücksichtigen.

NameValueCollection(NameValueCollection)

Kopiert die Einträge aus dem angegebenen NameValueCollection-Objekt in ein neues NameValueCollection-Objekt, dessen Anfangskapazität der Anzahl von kopierten Einträge entspricht, und verwendet denselben Hashcodeanbieter und Comparer wie die Quellauflistung.

NameValueCollection(SerializationInfo, StreamingContext)
Veraltet.

Initialisiert eine neue Instanz der NameValueCollection-Klasse, die serialisierbar ist und die angegebene SerializationInfo und den angegebenen StreamingContext verwendet.

Eigenschaften

AllKeys

Ruft alle Schlüssel in der NameValueCollection-Instanz ab.

Count

Ruft die Anzahl von Schlüssel-Wert-Paaren in der NameObjectCollectionBase-Instanz ab.

(Geerbt von NameObjectCollectionBase)
IsReadOnly

Ruft einen Wert ab, der angibt, ob die NameObjectCollectionBase-Instanz schreibgeschützt ist, oder legt diesen fest.

(Geerbt von NameObjectCollectionBase)
Item[Int32]

Ruft den Eintrag am angegebenen Index der NameValueCollection-Instanz ab.

Item[String]

Ruft den Eintrag mit dem angegebenen Schlüssel in der NameValueCollection-Instanz ab oder legt diesen fest.

Keys

Ruft eine NameObjectCollectionBase.KeysCollection-Instanz ab, die alle Schlüssel in der NameObjectCollectionBase-Instanz enthält.

(Geerbt von NameObjectCollectionBase)

Methoden

Add(NameValueCollection)

Kopiert die Einträge in der angegebenen NameValueCollection-Instanz in die aktuelle NameValueCollection-Instanz.

Add(String, String)

Fügt der NameValueCollection-Instanz einen Eintrag mit dem angegebenen Schlüssel und Wert hinzu.

BaseAdd(String, Object)

Fügt einen Eintrag mit dem angegebenen Schlüssel und Wert der NameObjectCollectionBase-Instanz hinzu.

(Geerbt von NameObjectCollectionBase)
BaseClear()

Entfernt alle Einträge aus der NameObjectCollectionBase-Instanz.

(Geerbt von NameObjectCollectionBase)
BaseGet(Int32)

Ruft den Wert des Eintrags am angegebenen Index der NameObjectCollectionBase-Instanz ab.

(Geerbt von NameObjectCollectionBase)
BaseGet(String)

Ruft den Wert des ersten Eintrags mit dem angegebenen Schlüssel aus der NameObjectCollectionBase-Instanz ab.

(Geerbt von NameObjectCollectionBase)
BaseGetAllKeys()

Gibt ein String-Array zurück, das alle Schlüssel der NameObjectCollectionBase-Instanz enthält.

(Geerbt von NameObjectCollectionBase)
BaseGetAllValues()

Gibt ein Object-Array zurück, das alle Werte der NameObjectCollectionBase-Instanz enthält.

(Geerbt von NameObjectCollectionBase)
BaseGetAllValues(Type)

Gibt ein Array des angegebenen Typs zurück, das alle Werte der NameObjectCollectionBase-Instanz enthält.

(Geerbt von NameObjectCollectionBase)
BaseGetKey(Int32)

Ruft den Schlüssel des Eintrags am angegebenen Index der NameObjectCollectionBase-Instanz ab.

(Geerbt von NameObjectCollectionBase)
BaseHasKeys()

Ruft einen Wert ab, der angibt, ob die NameObjectCollectionBase-Instanz Einträge enthält, deren Schlüssel nicht null sind.

(Geerbt von NameObjectCollectionBase)
BaseRemove(String)

Entfernt die Einträge mit dem angegebenen Schlüssel aus der NameObjectCollectionBase-Instanz.

(Geerbt von NameObjectCollectionBase)
BaseRemoveAt(Int32)

Entfernt den Eintrag am angegebenen Index der NameObjectCollectionBase-Instanz.

(Geerbt von NameObjectCollectionBase)
BaseSet(Int32, Object)

Legt den Wert des Eintrags am angegebenen Index der NameObjectCollectionBase-Instanz fest.

(Geerbt von NameObjectCollectionBase)
BaseSet(String, Object)

Legt den Wert des ersten Eintrags mit dem angegebenen Schlüssel in der NameObjectCollectionBase-Instanz fest. Wenn der Schlüssel nicht vorhanden ist, wird der NameObjectCollectionBase-Instanz ein Eintrag mit dem angegebenen Wert und Schlüssel hinzugefügt.

(Geerbt von NameObjectCollectionBase)
Clear()

Erklärt die zwischengespeicherten Arrays für ungültig und entfernt alle Einträge aus der NameValueCollection-Instanz.

CopyTo(Array, Int32)

Kopiert die gesamte NameValueCollection-Instanz in ein kompatibles eindimensionales Array, beginnend am angegebenen Index des Zielarrays.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
Get(Int32)

Ruft die Werte am angegebenen Index der NameValueCollection-Instanz ab, die in einer einzigen, durch Trennzeichen getrennten Liste zusammengefasst werden.

Get(String)

Ruft die dem angegebenen Schlüssel zugeordneten Werte aus der NameValueCollection-Instanz ab, die in einer einzigen, durch Trennzeichen getrennten Liste zusammengefasst werden.

GetEnumerator()

Gibt einen Enumerator zurück, der die NameObjectCollectionBase durchläuft.

(Geerbt von NameObjectCollectionBase)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetKey(Int32)

Ruft den Schlüssel am angegebenen Index der NameValueCollection-Instanz ab.

GetObjectData(SerializationInfo, StreamingContext)
Veraltet.

Implementiert die ISerializable-Schnittstelle und gibt die zum Serialisieren der NameObjectCollectionBase-Instanz erforderlichen Daten zurück.

(Geerbt von NameObjectCollectionBase)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValues(Int32)

Ruft die Werte am angegebenen Index der NameValueCollection-Instanz ab.

GetValues(String)

Ruft aus der NameValueCollection-Instanz die Werte ab, die dem angegebenen Schlüssel zugeordnet sind.

HasKeys()

Ruft einen Wert ab, der angibt, ob die NameValueCollection-Instanz Schlüssel enthält, die nicht null sind.

InvalidateCachedArrays()

Setzt die zwischengespeicherten Arrays der Auflistung auf null zurück.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnDeserialization(Object)

Implementiert die ISerializable-Schnittstelle und löst das Deserialisierungsereignis aus, sobald die Deserialisierung abgeschlossen ist.

(Geerbt von NameObjectCollectionBase)
Remove(String)

Entfernt die Einträge mit dem angegebenen Schlüssel aus der NameObjectCollectionBase-Instanz.

Set(String, String)

Legt den Wert eines Eintrags in der NameValueCollection-Instanz fest.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

ICollection.CopyTo(Array, Int32)

Kopiert die gesamte NameObjectCollectionBase-Instanz in ein kompatibles eindimensionales Array, beginnend am angegebenen Index des Zielarrays.

(Geerbt von NameObjectCollectionBase)
ICollection.IsSynchronized

Ruft einen Wert ab, der angibt, ob der Zugriff auf das NameObjectCollectionBase-Objekt synchronisiert (threadsicher) ist.

(Geerbt von NameObjectCollectionBase)
ICollection.SyncRoot

Ruft ein Objekt ab, mit dem der Zugriff auf das NameObjectCollectionBase-Objekt synchronisiert werden kann.

(Geerbt von NameObjectCollectionBase)

Erweiterungsmethoden

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um

OfType<TResult>(IEnumerable)

Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs

AsParallel(IEnumerable)

Ermöglicht die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Konvertiert einen IEnumerable in einen IQueryable.

Gilt für:

Threadsicherheit

Öffentliche statische (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Diese Implementierung stellt keinen synchronisierten (threadsicheren) Wrapper für einen bereit NameValueCollection, aber abgeleitete Klassen können ihre eigenen synchronisierten Versionen von NameValueCollection mithilfe der SyncRoot -Eigenschaft der NameObjectCollectionBase -Klasse erstellen.

Das Aufzählen durch eine Auflistung ist grundsätzlich keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, besteht die Möglichkeit, dass andere Threads sie ändern. Dies führt dazu, dass der Enumerator eine Ausnahme auslöst. Um während der Enumeration Threadsicherheit zu gewährleisten, können Sie entweder die Auflistung während der gesamten Enumeration sperren oder die Ausnahmen, die aus von anderen Threads stammenden Änderungen resultieren, abfangen.

Weitere Informationen