Ce sujet n'a pas encore été évalué - Évaluez ce sujet

NameValueCollection, classe

Mise à jour : novembre 2007

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

Espace de noms :  System.Collections.Specialized
Assembly :  System (dans System.dll)

[SerializableAttribute]
public class NameValueCollection : NameObjectCollectionBase
/** @attribute SerializableAttribute */ 
public class NameValueCollection extends NameObjectCollectionBase
public class NameValueCollection extends NameObjectCollectionBase

Cette collection se base sur la classe NameObjectCollectionBase. Cependant, contrairement à NameObjectCollectionBase, elle stocke plusieurs valeurs de chaîne sous une même clé.

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

Chaque élément est une paire clé/valeur.

La capacité de NameValueCollection correspond au nombre d'éléments que peut contenir NameValueCollection. Lorsque des éléments sont ajoutés à NameValueCollection, la capacité augmente automatiquement par réallocation.

Le fournisseur de code de hachage fournit les codes de hachage des 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 CaseInsensitiveComparer.

Dans la version 1.0 du .NET Framework, cette classe utilise des comparaisons de chaînes dépendantes de la culture. Toutefois, dans la version 1.1 et les versions ultérieures du .NET Framework, elle utilise CultureInfo.InvariantCulture pour les comparaisons de chaînes. Pour plus d'informations sur l'impact de la culture sur les comparaisons et le tri, consultez Comparaison et tri des données pour une culture spécifiqueComparaison et tri des données pour une culture spécifique et Exécution d'opérations de chaînes indépendantes de la culture.

null est autorisée comme clé ou comme valeur.

Attention :

La méthode Get ne distingue pas null qui est retourné parce que la clé spécifiée est introuvable et null, retourné parce que la valeur associée à la clé est null.

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 )  {
      IEnumerator myEnumerator = myCol.GetEnumerator();
      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


*/


import System.*;
import System.Collections.*;
import System.Collections.Specialized.*;

public class SamplesNameValueCollection
{
    public static void main(String[] args)
    {
        // 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.get_Item(1));
        Console.WriteLine("Key \"red\" has the value {0}.",
            myCol.get_Item("red"));
        Console.WriteLine();
        // Copies the values to a string array and displays the string array.
        String myStrArr[] = new String[myCol.get_Count()];
        myCol.CopyTo(myStrArr, 0);
        Console.WriteLine("The string array contains:");
        for (int iCtr = 0; iCtr < myStrArr.get_Length(); iCtr++) {
            String s = myStrArr[iCtr];
            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);
    } //main

    public static void PrintKeysAndValues(NameValueCollection myCol)
    {
        IEnumerator myEnumerator = myCol.GetEnumerator();
        Console.WriteLine("   KEY        VALUE");
        for (int iCtr = 0; iCtr < myCol.get_Count(); iCtr++) {
            String s = myCol.get_AllKeys()[iCtr];
            Console.WriteLine("   {0,-10} {1}", s, myCol.get_Item(s));
        }
        Console.WriteLine();
    } //PrintKeysAndValues

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

/*
    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       
*/


Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

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

L'énumération d'une collection n'est intrinsèquement pas une procédure thread-safe. Même lorsqu'une collection est synchronisée, les autres threads peuvent toujours modifier la collection, 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 soit verrouiller la collection pendant l'ensemble de l'énumération, soit intercepter les exceptions résultant des modifications apportées par les autres threads.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC, Xbox 360

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Pris en charge dans : 3.5, 2.0, 1.0

XNA Framework

Pris en charge dans : 2.0, 1.0
Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,