AllKeys
- операция O(n)
, а Keys
- O(1)
. Это связано с тем, что AllKeys
копирует ключи в новый массив, а Keys
просто возвращает ссылку на коллекцию закрытых ключей NameValueCollection
. Таким образом, за исключением разницы в производительности, коллекция, возвращаемая Keys
, изменится вместе с базовой коллекцией, поскольку это всего лишь ссылка на оригинал, а AllKeys
будет изолирована от изменений, потому что это копия.
Эта небольшая тестовая программа показывает разницу в поведении:
using System;
using System.Collections.Specialized;
static class Program
{
static void Main()
{
var collection = new NameValueCollection();
var keys = collection.Keys;
var allKeys = collection.AllKeys;
collection.Add("Name", "Value");
Console.WriteLine("Keys: " + keys.Count);
Console.WriteLine("AllKeys: " + allKeys.Length);
Console.ReadLine();
}
}
Вывод:
Keys: 1
AllKeys: 0