NameValueCollection Класс

Определение

Представляет коллекцию связанных String ключей и String значений, к которым можно получить доступ с помощью ключа или индекса.

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
Наследование
NameValueCollection
Производный
Атрибуты

Примеры

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

Комментарии

Эта коллекция основана на NameObjectCollectionBase классе. Каждый элемент коллекции является парой "ключ-значение". Однако в отличие от NameObjectCollectionBaseэтого класса, этот класс может хранить несколько строковых значений под одним ключом.

Этот класс можно использовать для заголовков, строк запроса и данных формы.

Коллекции этого типа не сохраняют порядок элементов, и при перечислении коллекции не гарантируется определенное упорядочение.

Емкость NameValueCollection — это количество элементов, которые NameValueCollection могут храниться. При добавлении элементов его емкость автоматически увеличивается по мере необходимости при перемещении.

Поставщик хэш-кода отпускает хэш-коды для ключей NameValueCollectionв . Поставщик хэш-кода по умолчанию — это CaseInsensitiveHashCodeProviderпоставщик хэш-кода.

Средство сравнения определяет, равны ли два ключа. Средство сравнения по умолчанию — это CaseInsensitiveComparer соглашение, использующее соглашения инвариантного языка и региональных параметров, то есть сравнения ключей не учитывает регистр по умолчанию. Чтобы выполнить сравнение ключей с учетом регистра, вызовите NameValueCollection.NameValueCollection(IEqualityComparer) конструктор и укажите значение StringComparer.CurrentCulture, StringComparer.InvariantCultureили StringComparer.Ordinal в качестве аргумента equalityComparer . Дополнительные сведения о том, как язык и региональные параметры влияют на сравнения и сортировку, см. в разделе "Выполнение Culture-Insensitive строковых операций".

null допускается как ключ или значение.

Предостережение

Метод Get не отличается от null возвращаемого ключа, так как указанный ключ не найден и null возвращается, так как значение, связанное с ключом, является null.

Конструкторы

Имя Описание
NameValueCollection()

Инициализирует новый экземпляр NameValueCollection класса, который является пустым, имеет начальную емкость по умолчанию и использует поставщик хэш-кода по умолчанию без учета регистра и нечувствительного сравнения регистра по умолчанию.

NameValueCollection(IEqualityComparer)

Инициализирует новый экземпляр NameValueCollection класса, который является пустым, имеет начальную емкость по умолчанию и использует указанный IEqualityComparer объект.

NameValueCollection(IHashCodeProvider, IComparer)
Устаревшие..
Устаревшие..

Инициализирует новый экземпляр NameValueCollection класса, который является пустым, имеет начальную емкость по умолчанию и использует указанный поставщик хэш-кода и указанный средство сравнения.

NameValueCollection(Int32, IEqualityComparer)

Инициализирует новый экземпляр NameValueCollection класса, который является пустым, имеет указанную начальную емкость и использует указанный IEqualityComparer объект.

NameValueCollection(Int32, IHashCodeProvider, IComparer)
Устаревшие..
Устаревшие..

Инициализирует новый экземпляр NameValueCollection класса, который является пустым, имеет указанную начальную емкость и использует указанный поставщик хэш-кода и указанный средство сравнения.

NameValueCollection(Int32, NameValueCollection)

Копирует записи из указанного NameValueCollection в новый NameValueCollection с указанной начальной емкостью или той же начальной емкостью, что и количество скопированных записей, независимо от того, что больше, и использование поставщика хэш-кода без учета регистра по умолчанию и нечувствительного сравнения регистра по умолчанию.

NameValueCollection(Int32)

Инициализирует новый экземпляр NameValueCollection класса, который является пустым, имеет указанную начальную емкость и использует поставщик хэш-кода по умолчанию без учета регистра и нечувствительного сравнения регистра по умолчанию.

NameValueCollection(NameValueCollection)

Копирует записи из указанного NameValueCollection в новое NameValueCollection с той же начальной емкостью, что и количество скопированных записей и использование того же поставщика хэш-кода и того же сравнения, что и исходная коллекция.

NameValueCollection(SerializationInfo, StreamingContext)
Устаревшие..

Инициализирует новый экземпляр NameValueCollection класса, который сериализуется и использует указанный SerializationInfo и StreamingContext.

Свойства

Имя Описание
AllKeys

Возвращает все ключи в элементе NameValueCollection.

Count

Возвращает количество пар "ключ-значение", содержащихся в экземпляре NameObjectCollectionBase .

(Унаследовано от NameObjectCollectionBase)
IsReadOnly

Возвращает или задает значение, указывающее, доступен ли NameObjectCollectionBase экземпляр только для чтения.

(Унаследовано от NameObjectCollectionBase)
Item[Int32]

Возвращает запись по указанному индексу NameValueCollectionобъекта.

Item[String]

Возвращает или задает запись с указанным ключом в элементе NameValueCollection.

Keys

NameObjectCollectionBase.KeysCollection Возвращает экземпляр, содержащий все ключи в экземпляреNameObjectCollectionBase.

(Унаследовано от NameObjectCollectionBase)

Методы

Имя Описание
Add(NameValueCollection)

Копирует записи в указанный NameValueCollection в текущий NameValueCollection.

Add(String, String)

Добавляет запись с указанным именем и значением в объект NameValueCollection.

BaseAdd(String, Object)

Добавляет запись с указанным ключом и значением в NameObjectCollectionBase экземпляр.

(Унаследовано от NameObjectCollectionBase)
BaseClear()

Удаляет все записи из экземпляра NameObjectCollectionBase .

(Унаследовано от NameObjectCollectionBase)
BaseGet(Int32)

Возвращает значение записи по указанному индексу экземпляра NameObjectCollectionBase .

(Унаследовано от NameObjectCollectionBase)
BaseGet(String)

Возвращает значение первой записи с указанным ключом из экземпляра NameObjectCollectionBase .

(Унаследовано от NameObjectCollectionBase)
BaseGetAllKeys()

String Возвращает массив, содержащий все ключи в экземпляреNameObjectCollectionBase.

(Унаследовано от NameObjectCollectionBase)
BaseGetAllValues()

Object Возвращает массив, содержащий все значения в экземпляреNameObjectCollectionBase.

(Унаследовано от NameObjectCollectionBase)
BaseGetAllValues(Type)

Возвращает массив указанного типа, содержащий все значения в экземпляре NameObjectCollectionBase .

(Унаследовано от NameObjectCollectionBase)
BaseGetKey(Int32)

Возвращает ключ записи по указанному индексу экземпляра NameObjectCollectionBase .

(Унаследовано от NameObjectCollectionBase)
BaseHasKeys()

Возвращает значение, указывающее, содержит ли NameObjectCollectionBase экземпляр записи, ключи которых не nullявляются.

(Унаследовано от NameObjectCollectionBase)
BaseRemove(String)

Удаляет записи с указанным ключом из экземпляра NameObjectCollectionBase .

(Унаследовано от NameObjectCollectionBase)
BaseRemoveAt(Int32)

Удаляет запись по указанному индексу экземпляра NameObjectCollectionBase .

(Унаследовано от NameObjectCollectionBase)
BaseSet(Int32, Object)

Задает значение записи по указанному индексу экземпляра NameObjectCollectionBase .

(Унаследовано от NameObjectCollectionBase)
BaseSet(String, Object)

Задает значение первой записи с указанным ключом в экземпляре NameObjectCollectionBase , если оно найдено; в противном случае добавляет запись с указанным ключом и значением в NameObjectCollectionBase экземпляр.

(Унаследовано от NameObjectCollectionBase)
Clear()

Отменяет кэшированные массивы и удаляет все записи из него NameValueCollection.

CopyTo(Array, Int32)

Копирует весь NameValueCollection в совместимую одномерную Array, начиная с указанного индекса целевого массива.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Get(Int32)

Возвращает значения по указанному индексу объединенного NameValueCollection в один разделенный запятыми список.

Get(String)

Возвращает значения, связанные с указанным ключом из объединенного NameValueCollection в один разделенный запятыми список.

GetEnumerator()

Возвращает перечислитель, который выполняет итерацию через NameObjectCollectionBase.

(Унаследовано от NameObjectCollectionBase)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetKey(Int32)

Возвращает ключ по указанному индексу NameValueCollectionобъекта.

GetObjectData(SerializationInfo, StreamingContext)
Устаревшие..

ISerializable Реализует интерфейс и возвращает данные, необходимые для сериализации экземпляраNameObjectCollectionBase.

(Унаследовано от NameObjectCollectionBase)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
GetValues(Int32)

Возвращает значения по указанному индексу NameValueCollectionобъекта.

GetValues(String)

Возвращает значения, связанные с указанным ключом из .NameValueCollection

HasKeys()

Возвращает значение, указывающее, содержатся ли NameValueCollection ключи, которые не nullявляются.

InvalidateCachedArrays()

Сбрасывает кэшированные массивы коллекции nullв .

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
OnDeserialization(Object)

ISerializable Реализует интерфейс и вызывает событие десериализации после завершения десериализации.

(Унаследовано от NameObjectCollectionBase)
Remove(String)

Удаляет записи с указанным ключом из экземпляра NameObjectCollectionBase .

Set(String, String)

Задает значение записи в элементе NameValueCollection.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
ICollection.CopyTo(Array, Int32)

Копирует весь NameObjectCollectionBase в совместимую одномерную Array, начиная с указанного индекса целевого массива.

(Унаследовано от NameObjectCollectionBase)
ICollection.IsSynchronized

Возвращает значение, указывающее, синхронизирован ли доступ к NameObjectCollectionBase объекту (потокобезопасный).

(Унаследовано от NameObjectCollectionBase)
ICollection.SyncRoot

Возвращает объект, который можно использовать для синхронизации доступа к объекту NameObjectCollectionBase .

(Унаследовано от NameObjectCollectionBase)

Методы расширения

Имя Описание
AsParallel(IEnumerable)

Включает параллелизацию запроса.

AsQueryable(IEnumerable)

Преобразует IEnumerable в IQueryable.

Cast<TResult>(IEnumerable)

Приведение элементов IEnumerable к указанному типу.

OfType<TResult>(IEnumerable)

Фильтрует элементы IEnumerable на основе указанного типа.

Применяется к

Потокобезопасность

Общедоступные статические (Shared в Visual Basic) элементы этого типа являются потокобезопасны. Никакие члены экземпляра не гарантированы как потокобезопасные.

Эта реализация не предоставляет синхронизированную (потокобезопасную) оболочку для класса NameValueCollection, но производные классы NameValueCollection могут создавать собственные синхронизированные версии класса с помощью SyncRoot свойства NameObjectCollectionBase класса.

Перечисление через коллекцию по сути не является потокобезопасной процедурой. Даже если коллекция синхронизирована, другие потоки по-прежнему могут изменять коллекцию, что приводит к возникновению исключения перечислителем. Чтобы гарантировать безопасность потоков во время перечисления, можно заблокировать коллекцию во время всего перечисления или поймать исключения, полученные из изменений, внесенных другими потоками.

См. также раздел