Namevaluecollection, который против словарь [дубликат]


Возможные Дубликаты:
IDictionary или NameValueCollection

по какой причине я должен использовать Dictionary вместо NameValueCollection?

(В C# / .NET Framework)

Вариант 1, используя NameValueCollection:

//enter values:
NameValueCollection nvc = new NameValueCollection()
{
  {"key1", "value1"},
  {"key2", "value2"},
  {"key3", "value3"}
};

// retrieve values:
foreach(string key in nvc.AllKeys)
{
  string value = nvc[key];
  // do something
}

Вариант 2, используя словарь...

//enter values:
Dictionary<string, string> dict = new Dictionary<string, string>()
{
  {"key1", "value1"},
  {"key2", "value2"},
  {"key3", "value3"}
};

// retrieve values:
foreach (KeyValuePair<string, string> kvp in dict)
{
  string key = kvp.Key;
  string val = kvp.Value;
  // do something
}

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

3 84

3 ответа:

они не являются семантически идентичными. Элемент NameValueCollection можете иметь дубликаты ключей в то время как Dictionary не может.

лично если у вас нет дубликатов ключей, то я бы придерживался Dictionary. Это более современный, использует IEnumerable<> что позволяет легко смешиваться с Linq запросы. Вы даже можете создать Dictionary С помощью LinqToDictionary() метод.

NameValueCollection является строковым типом, В то время как словарь использует универсальные типы, чтобы разрешить дисперсию типа. Смотрите преимущества дженериков.

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

от:http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

Словарь)>) универсальный класс предоставляет отображение из набор ключей к набору значений. Каждый дополнение к словарю состоит из значение и соответствующего ключа. Получение значения с помощью его ключа очень быстро, близко к O(1), потому что Словарь)>) класс реализован в виде хэш-таблицы.