Partager via


NameValueCollection Classe

Définition

Représente une collection de clés de type String et de valeurs String associées accessibles soit via la clé, soit via l’index.

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
Héritage
NameValueCollection
Dérivé
Attributs

Exemples

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

Remarques

Cette collection est basée sur la NameObjectCollectionBase classe . Chaque élément de la collection est une paire clé/valeur. Toutefois, contrairement à , NameObjectCollectionBasecette classe peut stocker plusieurs valeurs de chaîne sous une seule clé.

Cette classe peut être utilisée pour les en-têtes, les chaînes de requête et les données de formulaire.

Les collections de ce type ne préservent pas l’ordre des éléments et aucun classement particulier n’est garanti lors de l’énumération de la collection.

La capacité d’un NameValueCollection correspond au nombre d’éléments que le NameValueCollection peut contenir. À mesure que des éléments sont ajoutés, sa capacité est automatiquement augmentée en fonction des besoins grâce à la réaffectation.

Le fournisseur de code de hachage distribue des codes de hachage pour les clés dans .NameValueCollection Le fournisseur de code de hachage par défaut est .CaseInsensitiveHashCodeProvider

Le comparateur détermine si deux clés sont égales. Le comparateur par défaut est un CaseInsensitiveComparer qui utilise les conventions de la culture invariante ; autrement dit, les comparaisons clés ne respectent pas la casse par défaut. Pour effectuer des comparaisons de clés respectant la casse, appelez le NameValueCollection.NameValueCollection(IEqualityComparer) constructeur et fournissez la valeur StringComparer.CurrentCulture, StringComparer.InvariantCultureou StringComparer.Ordinal comme equalityComparer argument. Pour plus d’informations sur la façon dont la culture affecte les comparaisons et le tri, consultez Exécution d’opérations de chaîne Culture-Insensitive.

null est autorisé en tant que clé ou en tant que valeur.

Attention

La Get méthode ne fait pas la distinction entre null ce qui est retourné, car la clé spécifiée est introuvable et null celle qui est retournée, car la valeur associée à la clé est null.

Constructeurs

NameValueCollection()

Initialise une nouvelle instance de la classe NameValueCollection qui est vide, possède la capacité initiale par défaut et utilise le fournisseur de code de hachage ne respectant pas la casse par défaut, ainsi que le comparateur ne respectant pas la casse par défaut.

NameValueCollection(IEqualityComparer)

Initialise une nouvelle instance de la classe NameValueCollection qui est vide, possède la capacité initiale par défaut et utilise l'objet IEqualityComparer spécifié.

NameValueCollection(IHashCodeProvider, IComparer)
Obsolète.
Obsolète.

Initialise une nouvelle instance de la classe NameValueCollection qui est vide, possède la capacité initiale par défaut et utilise le fournisseur de code de hachage spécifié, ainsi que le comparateur spécifié.

NameValueCollection(Int32)

Initialise une nouvelle instance de la classe NameValueCollection qui est vide, possède la capacité initiale spécifiée et utilise le fournisseur de code de hachage ne respectant pas la casse par défaut, ainsi que le comparateur ne respectant pas la casse par défaut.

NameValueCollection(Int32, IEqualityComparer)

Initialise une nouvelle instance de la classe NameValueCollection qui est vide, possède la capacité initiale spécifiée et utilise l'objet IEqualityComparer spécifié.

NameValueCollection(Int32, IHashCodeProvider, IComparer)
Obsolète.
Obsolète.

Initialise une nouvelle instance de la classe NameValueCollection qui est vide, possède la capacité initiale spécifiée et utilise le fournisseur de code de hachage spécifié, ainsi que le comparateur spécifié.

NameValueCollection(Int32, NameValueCollection)

Copie les entrées du NameValueCollection spécifié vers un nouveau NameValueCollection possédant la capacité initiale spécifiée ou la même capacité initiale que le nombre d'entrées copiées (selon la valeur la plus élevée) et utilisant le fournisseur de code de hachage ne respectant pas la casse par défaut, ainsi que le comparateur ne respectant pas la casse par défaut.

NameValueCollection(NameValueCollection)

Copie les entrées du NameValueCollection spécifié vers un nouveau NameValueCollection possédant la même capacité initiale que le nombre d’entrées copiées et utilisant le même fournisseur de code de hachage, ainsi que le même comparateur que celui de la collection source.

NameValueCollection(SerializationInfo, StreamingContext)
Obsolète.

Initialise une nouvelle instance de la classe NameValueCollection qui est sérialisable et utilise les éléments SerializationInfo et StreamingContext spécifiés.

Propriétés

AllKeys

Obtient toutes les clés contenues dans le NameValueCollection.

Count

Obtient le nombre de paires clé/valeur contenues dans l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
IsReadOnly

Obtient ou définit une valeur indiquant si l'instance du NameObjectCollectionBase est en lecture seule.

(Hérité de NameObjectCollectionBase)
Item[Int32]

Obtient l'entrée à l'index spécifié du NameValueCollection.

Item[String]

Obtient ou définit l'entrée dans le NameValueCollection avec la clé spécifiée.

Keys

Obtient une instance NameObjectCollectionBase.KeysCollection qui contient toutes les clés dans l'instance NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)

Méthodes

Add(NameValueCollection)

Copie les entrées dans le NameValueCollection spécifié pour le NameValueCollection actuel.

Add(String, String)

Ajoute une entrée possédant le nom et la valeur spécifiés au NameValueCollection.

BaseAdd(String, Object)

Ajoute une entrée contenant la clé et la valeur spécifiées dans l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
BaseClear()

Supprime toutes les entrées de l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
BaseGet(Int32)

Obtient la valeur de l'entrée à l'index spécifié de l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
BaseGet(String)

Obtient la valeur de la première entrée ayant la clé spécifiée dans l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
BaseGetAllKeys()

Retourne un tableau de type String qui contient toutes les clés dans l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
BaseGetAllValues()

Retourne un tableau d'éléments Object qui contient toutes les valeurs présentes dans l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
BaseGetAllValues(Type)

Retourne un tableau du type spécifié qui contient toutes les valeurs présentes dans l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
BaseGetKey(Int32)

Obtient la clé de l'entrée à l'index spécifié de l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
BaseHasKeys()

Obtient une valeur indiquant si l'instance du NameObjectCollectionBase contient des entrées dont les clés ne sont pas null.

(Hérité de NameObjectCollectionBase)
BaseRemove(String)

Supprime les entrées contenant la clé spécifiée dans l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
BaseRemoveAt(Int32)

Supprime les entrées à l'index spécifié de l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
BaseSet(Int32, Object)

Définit la valeur de l'entrée à l'index spécifié de l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
BaseSet(String, Object)

Définit la valeur de la première entrée contenant la clé spécifiée dans l'instance du NameObjectCollectionBase, si elle existe ; sinon, ajoute une entrée contenant la clé et la valeur spécifiées dans l'instance du NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
Clear()

Invalide les tableaux mis en cache et supprime toutes les entrées du NameValueCollection.

CopyTo(Array, Int32)

Copie l'ensemble de l'objet NameValueCollection vers un objet Array unidimensionnel compatible, en commençant à l'index spécifié du tableau cible.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
Get(Int32)

Obtient les valeurs à l'index spécifié du NameValueCollection, combinées dans une liste avec la virgule comme séparateur.

Get(String)

Obtient les valeurs associées à la clé spécifiée du NameValueCollection, combinées dans une liste avec la virgule comme séparateur.

GetEnumerator()

Retourne un énumérateur qui itère au sein de NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetKey(Int32)

Obtient la clé à l'index spécifié du NameValueCollection.

GetObjectData(SerializationInfo, StreamingContext)
Obsolète.

Implémente l'interface ISerializable et retourne les données nécessaires pour sérialiser l'instance NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
GetValues(Int32)

Obtient les valeurs à l'index spécifié du NameValueCollection.

GetValues(String)

Obtient les valeurs associées à la clé spécifiée à partir du NameValueCollection.

HasKeys()

Obtient une valeur qui indique si le NameValueCollection contient des clés qui ne sont pas null.

InvalidateCachedArrays()

Réaffecte la valeur null aux tableaux mis en cache de la collection.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
OnDeserialization(Object)

Implémente l’interface ISerializable et déclenche l’événement de désérialisation une fois la désérialisation terminée.

(Hérité de NameObjectCollectionBase)
Remove(String)

Supprime les entrées contenant la clé spécifiée dans l'instance du NameObjectCollectionBase.

Set(String, String)

Définit la valeur d'une entrée dans le NameValueCollection.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

ICollection.CopyTo(Array, Int32)

Copie l'ensemble de l'objet NameObjectCollectionBase vers un objet Array unidimensionnel compatible, en commençant à l'index spécifié du tableau cible.

(Hérité de NameObjectCollectionBase)
ICollection.IsSynchronized

Obtient une valeur indiquant si l’accès à l’objet NameObjectCollectionBase est synchronisé (thread-safe).

(Hérité de NameObjectCollectionBase)
ICollection.SyncRoot

Obtient un objet qui peut être utilisé pour synchroniser l’accès à l’objet NameObjectCollectionBase.

(Hérité de NameObjectCollectionBase)

Méthodes d’extension

Cast<TResult>(IEnumerable)

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.

AsParallel(IEnumerable)

Active la parallélisation d'une requête.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.

S’applique à

Cohérence de thread

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread safe. Tous les membres de l'instance ne sont pas garantis comme étant thread-safe.

Cette implémentation ne fournit pas de wrapper synchronisé (thread safe) pour un NameValueCollection, mais les classes dérivées peuvent créer leurs propres versions synchronisées du à l’aide NameValueCollection de la SyncRoot propriété de la NameObjectCollectionBase classe .

L’énumération par le biais d’une collection n’est pas intrinsèquement une procédure thread safe. Même lorsqu'une collection est synchronisée, les autres threads peuvent toujours la modifier, ce qui entraîne la levée d'une exception par l'énumérateur. Pour garantir la sécurité des threads au cours de l’énumération, vous pouvez verrouiller la collection pendant l’ensemble de l’énumération ou bien intercepter les exceptions résultant des modifications apportées par les autres threads.

Voir aussi