NameValueCollection Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
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
- Наследование
- Производный
- Атрибуты
Примеры
#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
'
'
Комментарии
Эта коллекция основана на 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) |
Инициализирует новый экземпляр класса NameValueCollection, который является пустым, обладает указанной исходной емкостью, использует поставщика хэш-кода по умолчанию и функцию сравнения по умолчанию. Функция сравнения и поставщик хэш-кода работают без учета регистра. |
NameValueCollection(Int32, IEqualityComparer) |
Инициализирует новый экземпляр класса NameValueCollection, который является пустым, обладает указанной исходной емкостью и использует заданный объект IEqualityComparer. |
NameValueCollection(Int32, IHashCodeProvider, IComparer) |
Устаревшие..
Устаревшие..
Инициализирует новый экземпляр пустого класса NameValueCollection, который обладает указанной исходной емкостью и использует заданного поставщика хэш-кода и функцию сравнения. |
NameValueCollection(Int32, NameValueCollection) |
Копирует записи из указанной коллекции NameValueCollection в новую коллекцию 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 записи, в которых значение ключа отлично от |
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 ключи, отличные от |
InvalidateCachedArrays() |
Сбрасывает кэшированные массивы в коллекции до значения |
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) |
Методы расширения
Cast<TResult>(IEnumerable) |
Приводит элементы объекта IEnumerable к заданному типу. |
OfType<TResult>(IEnumerable) |
Выполняет фильтрацию элементов объекта IEnumerable по заданному типу. |
AsParallel(IEnumerable) |
Позволяет осуществлять параллельный запрос. |
AsQueryable(IEnumerable) |
Преобразовывает коллекцию IEnumerable в объект IQueryable. |
Применяется к
Потокобезопасность
Открытые статические (Shared
в Visual Basic) члены этого типа являются потокобезопасными. Потокобезопасная работа с членами экземпляров типа не гарантируется.
Эта реализация не предоставляет синхронизированную (потокобезопасную) оболочку NameValueCollectionдля , но производные классы могут создавать собственные синхронизированные NameValueCollection версии с помощью SyncRoot свойства NameObjectCollectionBase класса .
Перечисление через коллекцию внутренне не является потокобезопасной процедурой. Даже если коллекция синхронизирована, другие потоки могут ее изменить, что приведет к тому, что перечислитель создаст исключение. Для обеспечения потокобезопасности при перечислении можно либо заблокировать коллекцию на все время перечисления, либо перехватывать исключения, возникающие в результате изменений, внесенных другими потоками.