Comparteix a través de


NameValueCollection Clase

Definición

Representa una colección de claves de String y valores String asociados a los que se puede obtener acceso con la clave o con el índice.

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
Herencia
NameValueCollection
Derivado
Atributos

Ejemplos

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

Comentarios

Esta colección se basa en la NameObjectCollectionBase clase . Cada elemento de la colección es un par clave-valor. Sin embargo, a diferencia de NameObjectCollectionBase, esta clase puede almacenar varios valores de cadena en una sola clave.

Esta clase se puede usar para encabezados, cadenas de consulta y datos de formulario.

Las colecciones de este tipo no conservan el orden de los elementos y no se garantiza ningún orden determinado al enumerar la colección.

La capacidad de un NameValueCollection es el número de elementos que NameValueCollection puede contener. A medida que se agregan elementos, su capacidad aumenta automáticamente según sea necesario mediante la reasignación.

El proveedor de código hash dispensa códigos hash para las claves de NameValueCollection. El proveedor de código hash predeterminado es CaseInsensitiveHashCodeProvider.

El comparador determina si dos claves son iguales. El comparador predeterminado es un CaseInsensitiveComparer que usa las convenciones de la referencia cultural invariable; es decir, las comparaciones clave no distinguen mayúsculas de minúsculas de forma predeterminada. Para realizar comparaciones de claves que distinguen mayúsculas de minúsculas, llame al NameValueCollection.NameValueCollection(IEqualityComparer) constructor y proporcione un valor de StringComparer.CurrentCulture, StringComparer.InvariantCultureo StringComparer.Ordinal como argumento equalityComparer . Para obtener más información sobre cómo afecta la referencia cultural a las comparaciones y la ordenación, vea Realizar operaciones de cadena Culture-Insensitive.

null se permite como clave o como valor.

Precaución

El Get método no distingue entre null el que se devuelve porque no se encuentra la clave especificada y null que se devuelve porque el valor asociado a la clave es null.

Constructores

NameValueCollection()

Inicializa una nueva instancia de la clase NameValueCollection que está vacía, tiene la capacidad inicial predeterminada y usa el proveedor de código hash y el comparador predeterminados que no distinguen mayúsculas de minúsculas.

NameValueCollection(IEqualityComparer)

Inicializa una nueva instancia de la clase NameValueCollection que está vacía, tiene la capacidad inicial predeterminada y usa el objeto IEqualityComparer especificado.

NameValueCollection(IHashCodeProvider, IComparer)
Obsoletos.
Obsoletos.

Inicializa una nueva instancia de la clase NameValueCollection que está vacía, tiene la capacidad inicial predeterminada y usa el proveedor de código hash y el comparador especificados.

NameValueCollection(Int32)

Inicializa una nueva instancia de la clase NameValueCollection que está vacía, tiene la capacidad inicial especificada y usa el proveedor de códigos hash y el comparador predeterminados que no distinguen mayúsculas de minúsculas.

NameValueCollection(Int32, IEqualityComparer)

Inicializa una nueva instancia de la clase NameValueCollection que está vacía, tiene la capacidad inicial especificada y usa el objeto IEqualityComparer especificado.

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

Inicializa una nueva instancia de la clase NameValueCollection que está vacía, tiene la capacidad inicial especificada y usa el proveedor de códigos hash y el comparador especificados.

NameValueCollection(Int32, NameValueCollection)

Copia las entradas de la clase NameValueCollection especificada en una nueva clase NameValueCollection con la capacidad inicial especificada o con la misma capacidad inicial que el número de entradas copiadas, la que sea mayor, y con el proveedor de códigos hash y el comparador predeterminados que no distinguen mayúsculas de minúsculas.

NameValueCollection(NameValueCollection)

Copia las entradas de la clase NameValueCollection especificada en una nueva clase NameValueCollection que tiene la misma capacidad inicial que el número de entradas copiadas, usando el mismo proveedor de códigos hash y el mismo comparador que la colección de origen.

NameValueCollection(SerializationInfo, StreamingContext)
Obsoletos.

Inicializa una nueva instancia de la clase NameValueCollection que es serializable y usa las clases SerializationInfo y StreamingContext especificadas.

Propiedades

AllKeys

Obtiene todas las claves de NameValueCollection.

Count

Obtiene el número de pares de clave y valor incluidos en la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
IsReadOnly

Obtiene o establece un valor que indica si la instancia NameObjectCollectionBase es de solo lectura.

(Heredado de NameObjectCollectionBase)
Item[Int32]

Obtiene la entrada que se encuentra en el índice especificado de NameValueCollection.

Item[String]

Obtiene o establece la entrada con la clave especificada en NameValueCollection.

Keys

Obtiene una instancia NameObjectCollectionBase.KeysCollection que contiene todas las claves de la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)

Métodos

Add(NameValueCollection)

Copia las entradas del elemento NameValueCollection especificado en el elemento NameValueCollection actual.

Add(String, String)

Agrega una entrada con el nombre y el valor especificados a NameValueCollection.

BaseAdd(String, Object)

Agrega una entrada con la clave y el valor especificados a la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
BaseClear()

Elimina todas las entradas de la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
BaseGet(Int32)

Obtiene el valor de la entrada que se encuentra en el índice especificado de la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
BaseGet(String)

Obtiene el valor de la primera entrada con la clave especificada desde la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
BaseGetAllKeys()

Devuelve una matriz String que contiene todas las claves de la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
BaseGetAllValues()

Devuelve una matriz Object que contiene todos los valores de la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
BaseGetAllValues(Type)

Devuelve una matriz del tipo especificado que contiene todos los valores de la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
BaseGetKey(Int32)

Obtiene la clave de la entrada que se encuentra en el índice especificado de la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
BaseHasKeys()

Obtiene un valor que indica si la instancia NameObjectCollectionBase contiene entradas cuyas claves no son null.

(Heredado de NameObjectCollectionBase)
BaseRemove(String)

Quita las entradas con la clave especificada de la instancia de NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
BaseRemoveAt(Int32)

Elimina la entrada que se encuentra en el índice especificado de la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
BaseSet(Int32, Object)

Establece el valor de la entrada que se encuentra en el índice especificado de la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
BaseSet(String, Object)

Establece el valor de la primera entrada con la clave especificada de la instancia NameObjectCollectionBase, si la encuentra; en caso contrario, agrega una entrada con la clave y el valor especificados a la instancia NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
Clear()

Invalida las matrices almacenadas en caché y quita todas las entradas de NameValueCollection.

CopyTo(Array, Int32)

Copia la totalidad de NameValueCollection en una matriz Array unidimensional compatible, comenzando en el índice especificado de la matriz de destino.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
Get(Int32)

Obtiene los valores en el índice especificado de NameValueCollection combinados en una lista y separados por comas.

Get(String)

Obtiene los valores asociados a la clave especificada del elemento NameValueCollection combinados en una lista y separados por comas.

GetEnumerator()

Devuelve un enumerador que recorre en iteración la colección NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetKey(Int32)

Obtiene la clave en el índice especificado del elemento NameValueCollection.

GetObjectData(SerializationInfo, StreamingContext)
Obsoletos.

Implementa la interfaz de ISerializable y devuelve los datos necesarios para serializar la instancia de NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
GetValues(Int32)

Obtiene los valores que se encuentran en el índice especificado de NameValueCollection.

GetValues(String)

Obtiene los valores asociados a la clave especificada de NameValueCollection.

HasKeys()

Obtiene un valor que indica si NameValueCollection contiene claves que no son null.

InvalidateCachedArrays()

Restablece las matrices almacenadas en caché de la colección a null.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnDeserialization(Object)

Implementa la interfaz ISerializable y genera el evento de deserialización cuando esta ha finalizado.

(Heredado de NameObjectCollectionBase)
Remove(String)

Quita las entradas con la clave especificada de la instancia de NameObjectCollectionBase.

Set(String, String)

Establece el valor de una entrada de NameValueCollection.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

ICollection.CopyTo(Array, Int32)

Copia la totalidad de NameObjectCollectionBase en una matriz Array unidimensional compatible, comenzando en el índice especificado de la matriz de destino.

(Heredado de NameObjectCollectionBase)
ICollection.IsSynchronized

Obtiene un valor que indica si el acceso al objeto NameObjectCollectionBase está sincronizado (es seguro para subprocesos).

(Heredado de NameObjectCollectionBase)
ICollection.SyncRoot

Obtiene un objeto que puede utilizarse para sincronizar el acceso al objeto NameObjectCollectionBase.

(Heredado de NameObjectCollectionBase)

Métodos de extensión

Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.

Se aplica a

Seguridad para subprocesos

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Esta implementación no proporciona un contenedor sincronizado (seguro para subprocesos) para una NameValueCollectionclase , pero las clases derivadas pueden crear sus propias versiones sincronizadas de NameValueCollection mediante la SyncRoot propiedad de la NameObjectCollectionBase clase .

La enumeración a través de una colección no es intrínsecamente un procedimiento seguro para subprocesos. Incluso cuando una colección está sincronizada, otros subprocesos todavía pueden modificarla, lo que hace que el enumerador produzca una excepción. Con el fin de garantizar la seguridad para la ejecución de subprocesos durante la enumeración, se puede bloquear la colección durante toda la enumeración o detectar las excepciones resultantes de los cambios realizados por otros subprocesos.

Consulte también