AllKeys
est O(n)
, tandis que les Keys
est O(1)
. C'est parce qu' AllKeys
copie les clés dans un nouveau tableau, alors que Keys
seulement renvoie une référence à l' NameValueCollection
's de la clé privée de la collection. Donc au-delà de la différence de performance, la collection retournée par Keys
va changer avec la collection de base que c'est juste une référence à l'original, AllKeys
sera isolée de l'changements parce que c'est une copie.
Ce petit programme de test montre la différence de comportement:
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();
}
}
La sortie est:
Keys: 1
AllKeys: 0