NameValueCollection Klasa

Definicja

Reprezentuje kolekcję skojarzonych String kluczy i String wartości, do których można uzyskać dostęp za pomocą klucza lub indeksu.

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
Dziedziczenie
NameValueCollection
Pochodne
Atrybuty

Przykłady

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

Uwagi

Ta kolekcja jest oparta na NameObjectCollectionBase klasie . Każdy element kolekcji jest parą klucz/wartość. Jednak w przeciwieństwie do NameObjectCollectionBaseklasy , ta klasa może przechowywać wiele wartości ciągów w jednym kluczu.

Ta klasa może służyć do nagłówków, ciągów zapytań i danych formularzy.

Kolekcje tego typu nie zachowują kolejności elementów, a podczas wyliczania kolekcji nie ma gwarancji, że nie ma konkretnej kolejności.

Pojemność obiektu NameValueCollection to liczba elementów, które NameValueCollection mogą być przechowywane. W miarę dodawania elementów jego pojemność jest automatycznie zwiększana zgodnie z wymaganiami za pośrednictwem lokalizacji rzeczywistej.

Dostawca kodu skrótu wydaje kody skrótów dla kluczy w pliku NameValueCollection. Domyślnym dostawcą kodu skrótu CaseInsensitiveHashCodeProviderjest .

Moduł porównujący określa, czy dwa klucze są równe. Domyślnym modułem porównującym CaseInsensitiveComparer jest użycie konwencji niezmiennej kultury. Oznacza to, że kluczowe porównania są domyślnie niewrażliwe na wielkość liter. Aby wykonać porównania kluczy uwzględniających wielkość liter, wywołaj NameValueCollection.NameValueCollection(IEqualityComparer) konstruktor i podaj wartość StringComparer.CurrentCulture, StringComparer.InvariantCulturelub StringComparer.Ordinal jako equalityComparer argument. Aby uzyskać więcej informacji na temat wpływu kultury na porównania i sortowanie, zobacz Wykonywanie operacji Culture-Insensitive ciągów.

null parametr jest dozwolony jako klucz lub jako wartość.

Przestroga

Metoda Get nie rozróżnia null zwracanego klucza, ponieważ nie można odnaleźć określonego klucza, a null który jest zwracany, ponieważ wartość skojarzona z kluczem to null.

Konstruktory

NameValueCollection()

Inicjuje NameValueCollection nowe wystąpienie klasy, która jest pusta, ma domyślną pojemność początkową i używa domyślnego dostawcy kodu skrótu bez uwzględniania wielkości liter oraz domyślnego porównania bez uwzględniania wielkości liter.

NameValueCollection(IEqualityComparer)

Inicjuje NameValueCollection nowe wystąpienie klasy, która jest pusta, ma domyślną pojemność początkową i używa określonego IEqualityComparer obiektu.

NameValueCollection(IHashCodeProvider, IComparer)
Przestarzałe.
Przestarzałe.

Inicjuje NameValueCollection nowe wystąpienie klasy, która jest pusta, ma domyślną pojemność początkową i używa określonego dostawcy kodu skrótu i określonego porównania.

NameValueCollection(Int32)

Inicjuje NameValueCollection nowe wystąpienie klasy, która jest pusta, ma określoną pojemność początkową i używa domyślnego dostawcy kodu skrótu bez uwzględniania wielkości liter oraz domyślnego porównania bez uwzględniania wielkości liter.

NameValueCollection(Int32, IEqualityComparer)

Inicjuje NameValueCollection nowe wystąpienie klasy, która jest pusta, ma określoną pojemność początkową i używa określonego IEqualityComparer obiektu.

NameValueCollection(Int32, IHashCodeProvider, IComparer)
Przestarzałe.
Przestarzałe.

Inicjuje nowe wystąpienie NameValueCollection klasy, która jest pusta, ma określoną pojemność początkową i używa określonego dostawcy kodu skrótu i określonego porównania.

NameValueCollection(Int32, NameValueCollection)

Kopiuje wpisy z określonego NameValueCollection do nowego NameValueCollection z określoną początkową pojemnością lub taką samą początkową pojemność, jak liczba wpisów skopiowanych, w zależności od tego, która z tych wartości jest większa, i przy użyciu domyślnego dostawcy kodu skrótu bez uwzględniania wielkości liter i domyślnego porównania bez uwzględniania wielkości liter.

NameValueCollection(NameValueCollection)

Kopiuje wpisy z określonego NameValueCollection do nowego NameValueCollection o tej samej pojemności początkowej co liczba wpisów skopiowanych i przy użyciu tego samego dostawcy kodu skrótu i tego samego porównania co kolekcja źródłowa.

NameValueCollection(SerializationInfo, StreamingContext)
Przestarzałe.

Inicjuje NameValueCollection nowe wystąpienie klasy, które można serializować i używa określonych SerializationInfo i StreamingContext.

Właściwości

AllKeys

Pobiera wszystkie klucze w obiekcie NameValueCollection.

Count

Pobiera liczbę par klucz/wartość zawartych w wystąpieniu NameObjectCollectionBase .

(Odziedziczone po NameObjectCollectionBase)
IsReadOnly

Pobiera lub ustawia wartość wskazującą, czy NameObjectCollectionBase wystąpienie jest tylko do odczytu.

(Odziedziczone po NameObjectCollectionBase)
Item[Int32]

Pobiera wpis w określonym indeksie obiektu NameValueCollection.

Item[String]

Pobiera lub ustawia wpis z określonym kluczem w pliku NameValueCollection.

Keys

NameObjectCollectionBase.KeysCollection Pobiera wystąpienie zawierające wszystkie klucze w wystąpieniuNameObjectCollectionBase.

(Odziedziczone po NameObjectCollectionBase)

Metody

Add(NameValueCollection)

Kopiuje wpisy w określonym NameValueCollection elemencie do bieżącego NameValueCollectionelementu .

Add(String, String)

Dodaje wpis z określoną nazwą i wartością do elementu NameValueCollection.

BaseAdd(String, Object)

Dodaje wpis z określonym kluczem i wartością NameObjectCollectionBase do wystąpienia.

(Odziedziczone po NameObjectCollectionBase)
BaseClear()

Usuwa wszystkie wpisy z NameObjectCollectionBase wystąpienia.

(Odziedziczone po NameObjectCollectionBase)
BaseGet(Int32)

Pobiera wartość wpisu w określonym indeksie NameObjectCollectionBase wystąpienia.

(Odziedziczone po NameObjectCollectionBase)
BaseGet(String)

Pobiera wartość pierwszego wpisu z określonym kluczem NameObjectCollectionBase z wystąpienia.

(Odziedziczone po NameObjectCollectionBase)
BaseGetAllKeys()

Zwraca tablicę zawierającą String wszystkie klucze w wystąpieniu NameObjectCollectionBase .

(Odziedziczone po NameObjectCollectionBase)
BaseGetAllValues()

Zwraca tablicę zawierającą Object wszystkie wartości w wystąpieniu NameObjectCollectionBase .

(Odziedziczone po NameObjectCollectionBase)
BaseGetAllValues(Type)

Zwraca tablicę określonego typu, która zawiera wszystkie wartości w wystąpieniu NameObjectCollectionBase .

(Odziedziczone po NameObjectCollectionBase)
BaseGetKey(Int32)

Pobiera klucz wpisu w określonym indeksie NameObjectCollectionBase wystąpienia.

(Odziedziczone po NameObjectCollectionBase)
BaseHasKeys()

Pobiera wartość wskazującą, czy NameObjectCollectionBase wystąpienie zawiera wpisy, których klucze nie nullsą .

(Odziedziczone po NameObjectCollectionBase)
BaseRemove(String)

Usuwa wpisy z określonym kluczem NameObjectCollectionBase z wystąpienia.

(Odziedziczone po NameObjectCollectionBase)
BaseRemoveAt(Int32)

Usuwa wpis w określonym indeksie NameObjectCollectionBase wystąpienia.

(Odziedziczone po NameObjectCollectionBase)
BaseSet(Int32, Object)

Ustawia wartość wpisu w określonym indeksie NameObjectCollectionBase wystąpienia.

(Odziedziczone po NameObjectCollectionBase)
BaseSet(String, Object)

Ustawia wartość pierwszego wpisu z określonym kluczem w wystąpieniu NameObjectCollectionBase , jeśli zostanie znaleziony. W przeciwnym razie dodaje wpis z określonym kluczem i wartością NameObjectCollectionBase do wystąpienia.

(Odziedziczone po NameObjectCollectionBase)
Clear()

Unieważnia buforowane tablice i usuwa wszystkie wpisy z obiektu NameValueCollection.

CopyTo(Array, Int32)

Kopiuje całość NameValueCollection do zgodnego jednowymiarowego Arrayobiektu , zaczynając od określonego indeksu tablicy docelowej.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
Get(Int32)

Pobiera wartości w określonym indeksie połączonego NameValueCollection w jedną listę rozdzieloną przecinkami.

Get(String)

Pobiera wartości skojarzone z określonym kluczem z połączonej NameValueCollection w jedną listę rozdzieloną przecinkami.

GetEnumerator()

Zwraca moduł wyliczający, który iteruje przez element NameObjectCollectionBase.

(Odziedziczone po NameObjectCollectionBase)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetKey(Int32)

Pobiera klucz w określonym indeksie .NameValueCollection

GetObjectData(SerializationInfo, StreamingContext)
Przestarzałe.

Implementuje ISerializable interfejs i zwraca dane potrzebne do serializacji NameObjectCollectionBase wystąpienia.

(Odziedziczone po NameObjectCollectionBase)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
GetValues(Int32)

Pobiera wartości w określonym indeksie .NameValueCollection

GetValues(String)

Pobiera wartości skojarzone z określonym kluczem z .NameValueCollection

HasKeys()

Pobiera wartość wskazującą, czy NameValueCollection element zawiera klucze, które nie nullsą .

InvalidateCachedArrays()

Resetuje buforowane tablice kolekcji na null.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnDeserialization(Object)

Implementuje ISerializable interfejs i zgłasza zdarzenie deserializacji po zakończeniu deserializacji.

(Odziedziczone po NameObjectCollectionBase)
Remove(String)

Usuwa wpisy z określonym kluczem NameObjectCollectionBase z wystąpienia.

Set(String, String)

Ustawia wartość wpisu w obiekcie NameValueCollection.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

ICollection.CopyTo(Array, Int32)

Kopiuje całość NameObjectCollectionBase do zgodnego jednowymiarowego Arrayobiektu , zaczynając od określonego indeksu tablicy docelowej.

(Odziedziczone po NameObjectCollectionBase)
ICollection.IsSynchronized

Pobiera wartość wskazującą, czy dostęp do NameObjectCollectionBase obiektu jest synchronizowany (bezpieczny wątek).

(Odziedziczone po NameObjectCollectionBase)
ICollection.SyncRoot

Pobiera obiekt, który może służyć do synchronizowania dostępu do NameObjectCollectionBase obiektu.

(Odziedziczone po NameObjectCollectionBase)

Metody rozszerzania

Cast<TResult>(IEnumerable)

Rzutuje elementy obiektu IEnumerable na określony typ.

OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable elementu na podstawie określonego typu.

AsParallel(IEnumerable)

Umożliwia równoległość zapytania.

AsQueryable(IEnumerable)

Konwertuje element IEnumerable na .IQueryable

Dotyczy

Bezpieczeństwo wątkowe

Publiczne statyczne (Shared w Visual Basic) elementy członkowskie tego typu są bezpieczne wątkami. Wystąpienia elementów członkowskich nie dają gwarancji bezpieczeństwa wątków.

Ta implementacja nie zapewnia zsynchronizowanej (bezpiecznej wątku) otoki dla NameValueCollectionklasy , ale klasy pochodne mogą tworzyć własne zsynchronizowane wersje NameValueCollection klasy przy użyciu SyncRoot właściwości NameObjectCollectionBase klasy.

Wyliczanie za pomocą kolekcji nie jest wewnętrznie bezpieczną procedurą wątku. Nawet gdy kolekcja jest synchronizowana, inne wątki nadal mogą ją modyfikować. Powoduje to zgłaszanie wyjątku przez moduł wyliczający. Aby zagwarantować bezpieczeństwo wątków podczas wyliczania, można zablokować kolekcję podczas całego procesu wyliczania albo rejestrować wyjątki wynikłe ze zmian wprowadzanych przez inne wątków.

Zobacz też