Condividi tramite


NameValueCollection Classe

Definizione

Rappresenta un insieme di chiavi String e valori String associati cui è possibile accedere tramite la chiave o mediante l'indice.

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
Ereditarietà
NameValueCollection
Derivato
Attributi

Esempio

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

Commenti

Questa raccolta è basata sulla NameObjectCollectionBase classe . Ogni elemento della raccolta è una coppia chiave/valore. Tuttavia, a differenza di NameObjectCollectionBase, questa classe può archiviare più valori stringa in una singola chiave.

Questa classe può essere usata per intestazioni, stringhe di query e dati del modulo.

Le raccolte di questo tipo non mantengono l'ordinamento degli elementi e non è garantito alcun ordinamento specifico durante l'enumerazione della raccolta.

La capacità di un NameValueCollection oggetto è il numero di elementi che può NameValueCollection contenere. Man mano che vengono aggiunti elementi, la sua capacità viene aumentata automaticamente in base alle esigenze tramite la riallocazione.

Il provider di codice hash distribuisce i codici hash per le chiavi in NameValueCollection. Il provider di codice hash predefinito è .CaseInsensitiveHashCodeProvider

L'operatore di confronto determina se due chiavi sono uguali. L'operatore di confronto predefinito è un CaseInsensitiveComparer oggetto che usa le convenzioni delle impostazioni cultura invarianti, ovvero i confronti delle chiavi non fanno distinzione tra maiuscole e minuscole per impostazione predefinita. Per eseguire confronti di chiavi con distinzione tra maiuscole e minuscole, chiamare il NameValueCollection.NameValueCollection(IEqualityComparer) costruttore e specificare un valore , StringComparer.CurrentCultureStringComparer.InvariantCultureo StringComparer.Ordinal come equalityComparer argomento . Per altre informazioni su come le impostazioni cultura influiscono sui confronti e sull'ordinamento, vedere Esecuzione di operazioni stringa Culture-Insensitive.

null è consentito come chiave o come valore.

Attenzione

Il Get metodo non distingue tra null il quale viene restituito perché la chiave specificata non viene trovata e null che viene restituita perché il valore associato alla chiave è null.

Costruttori

NameValueCollection()

Inizializza una nuova istanza vuota della classe NameValueCollection, con la capacità iniziale predefinita e che usa il provider di codice hash e l'operatore di confronto senza distinzione tra maiuscole e minuscole predefiniti.

NameValueCollection(IEqualityComparer)

Inizializza una nuova istanza vuota della classe NameValueCollection, con la capacità iniziale predefinita e che usa l'oggetto IEqualityComparer specificato.

NameValueCollection(IHashCodeProvider, IComparer)
Obsoleti.
Obsoleti.

Inizializza una nuova istanza vuota della classe NameValueCollection con la capacità iniziale predefinita, che usa il provider di codice hash e l'operatore di confronto specificati.

NameValueCollection(Int32)

Inizializza una nuova istanza vuota della classe NameValueCollection con la capacità iniziale specificata, che usa il provider di codice hash e l'operatore di confronto senza distinzione tra maiuscole e minuscole predefiniti.

NameValueCollection(Int32, IEqualityComparer)

Inizializza una nuova istanza vuota della classe NameValueCollection, con la capacità iniziale specificata e che usa l'oggetto IEqualityComparer specificato.

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

Inizializza una nuova istanza vuota della classe NameValueCollection con la capacità iniziale specificata e che usa il provider di codice hash e l'operatore di confronto specificati.

NameValueCollection(Int32, NameValueCollection)

Copia le voci dall'oggetto NameValueCollection specificato in un nuovo oggetto NameValueCollection con la capacità iniziale specificata o uguale a quella del numero di voci copiate, in base a quale delle due ha il valore maggiore, e usando il provider di codice hash e l'operatore di confronto senza distinzione tra maiuscole e minuscole predefiniti.

NameValueCollection(NameValueCollection)

Copia le voci dall'oggetto NameValueCollection specificato a un nuovo oggetto NameValueCollection con la stessa capacità iniziale del numero di voci copiate e usando lo stesso provider di codice hash e lo stesso operatore di confronto della raccolta di origine.

NameValueCollection(SerializationInfo, StreamingContext)
Obsoleti.

Inizializza una nuova istanza della classe NameValueCollection che è serializzabile e usa gli oggetti SerializationInfo e StreamingContext specificati.

Proprietà

AllKeys

Ottiene tutte le chiavi contenute in NameValueCollection.

Count

Ottiene il numero di coppie chiave/valore contenute nell'istanza della classe NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
IsReadOnly

Ottiene o imposta un valore che indica se l'istanza di NameObjectCollectionBase è di sola lettura.

(Ereditato da NameObjectCollectionBase)
Item[Int32]

Ottiene la voce in corrispondenza dell'indice specificato della classe NameValueCollection.

Item[String]

Ottiene o imposta la voce con la chiave specificata in NameValueCollection.

Keys

Ottiene un'istanza NameObjectCollectionBase.KeysCollection che contiene tutte le chiavi nell'istanza NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)

Metodi

Add(NameValueCollection)

Copia le voci dell'oggetto NameValueCollection specificato nell'oggetto NameValueCollection corrente.

Add(String, String)

Aggiunge a NameValueCollection una voce con il nome e il valore specificati.

BaseAdd(String, Object)

Aggiunge una voce con la chiave e il valore specificati nell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseClear()

Rimuove tutte le voci dall'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGet(Int32)

Ottiene il valore della voce in corrispondenza dell'indice specificato dell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGet(String)

Ottiene il valore della prima voce con la chiave specificata dall'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGetAllKeys()

Restituisce una matrice String che contiene tutte le chiavi incluse nell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGetAllValues()

Restituisce una matrice Object che contiene tutti i valori inclusi nell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGetAllValues(Type)

Restituisce una matrice del tipo specificato che contiene tutti i valori inclusi nell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseGetKey(Int32)

Ottiene la chiave della voce in corrispondenza dell'indice specificato dell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseHasKeys()

Ottiene un valore che indica se l'istanza di NameObjectCollectionBase contiene voci le cui chiavi non sono null.

(Ereditato da NameObjectCollectionBase)
BaseRemove(String)

Rimuove le voci con la chiave specificata dall'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseRemoveAt(Int32)

Rimuove la voce in corrispondenza dell'indice specificato dell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseSet(Int32, Object)

Imposta il valore della voce in corrispondenza dell'indice specificato dell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
BaseSet(String, Object)

Imposta il valore della prima voce con la chiave specificata contenuta nell'istanza di NameObjectCollectionBase, se presente; in caso contrario aggiunge una voce con la chiave e il valore specificati nell'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
Clear()

Invalida le matrici presenti nella cache e rimuove tutte le voci da NameValueCollection.

CopyTo(Array, Int32)

Copia l'intero oggetto NameValueCollection in un oggetto Array compatibile unidimensionale, a partire dall'indice specificato della matrice di destinazione.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Get(Int32)

Ottiene i valori in corrispondenza dell'indice specificato dell'oggetto NameValueCollection combinato in un elenco separato da virgole.

Get(String)

Ottiene i valori associati alla chiave specificata dall'oggetto NameValueCollection combinati in un elenco separato da virgole.

GetEnumerator()

Restituisce un enumeratore che esegue l'iterazione di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetKey(Int32)

Ottiene la chiave in corrispondenza dell'indice specificato di NameValueCollection.

GetObjectData(SerializationInfo, StreamingContext)
Obsoleti.

Implementa l'interfaccia ISerializable e restituisce i dati necessari a serializzare l'istanza di NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
GetValues(Int32)

Ottiene i valori in corrispondenza dell'indice specificato dell'oggetto NameValueCollection.

GetValues(String)

Ottiene i valori associati alla chiave specificata dall'oggetto NameValueCollection.

HasKeys()

Ottiene un valore che indica se l'oggetto NameValueCollection contiene chiavi che non sono null.

InvalidateCachedArrays()

Ripristina su null le matrici dell'insieme inserite nella cache.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnDeserialization(Object)

Implementa l'interfaccia ISerializable e genera l'evento di deserializzazione quando la deserializzazione è completa.

(Ereditato da NameObjectCollectionBase)
Remove(String)

Rimuove le voci con la chiave specificata dall'istanza di NameObjectCollectionBase.

Set(String, String)

Imposta il valore di una voce contenuta nell'oggetto NameValueCollection.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

ICollection.CopyTo(Array, Int32)

Copia l'intero oggetto NameObjectCollectionBase in un oggetto Array compatibile unidimensionale, a partire dall'indice specificato della matrice di destinazione.

(Ereditato da NameObjectCollectionBase)
ICollection.IsSynchronized

Ottiene un valore che indica se l'accesso all'oggetto NameObjectCollectionBase è sincronizzato (thread-safe).

(Ereditato da NameObjectCollectionBase)
ICollection.SyncRoot

Ottiene un oggetto che può essere usato per sincronizzare l'accesso all'oggetto NameObjectCollectionBase.

(Ereditato da NameObjectCollectionBase)

Metodi di estensione

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.

AsParallel(IEnumerable)

Consente la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un oggetto IEnumerable in un oggetto IQueryable.

Si applica a

Thread safety

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono thread-safe. Non è invece garantita la sicurezza dei membri dell'istanza.

Questa implementazione non fornisce un wrapper sincronizzato (thread-safe) per un NameValueCollectionoggetto , ma le classi derivate possono creare le proprie versioni sincronizzate di NameValueCollection usando la SyncRoot proprietà della NameObjectCollectionBase classe .

L'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe. Anche se una raccolta è sincronizzata, è possibile che venga modificata da altri thread, con conseguente generazione di un'eccezione da parte dell'enumeratore. Per garantire la protezione dei thread durante l'enumerazione, è possibile bloccare la raccolta per l'intera enumerazione oppure intercettare le eccezioni determinate dalle modifiche apportate da altri thread.

Vedi anche